比较常量指针和非常量指针
Compare const and non-const pointers?
比较常量指针和非常量指针。这种比较合法吗?任何对这种比较的特别注意。谢谢
指向T
的指针可以隐式转换为指向T
的常量指针;类似地,指向T
的指针可以隐式地转换为指向const T
的指针。当您尝试将指针与常量指针进行比较时,编译器将根据需要执行其中一种转换,或者同时执行这两种转换。没有什么比比较两个非常量指针或两个常量指针更危险的了。
中const的目的
const char*p
就是承诺你不会改变它。理论上,一个非常量指针永远不应该指向同一代码中的同一位置,这是一个良好的编码实践。在实践中,你可能最终会制造一些非常量,因为它会让你的生活更轻松,但从概念上讲,它并不是真正的非常量。在这种情况下,您可能需要进行比较。如前所述,根据您使用的编译器及其设置,它可能喜欢也可能不喜欢这样的比较。为了避免这种情况,如果这让你感到困扰,在进行比较之前,强制将强制转换为非常数,例如:
如果((char*)const_p==non_const_p)
相关文章:
- 将常量指针引用绑定到非常量指针
- 如何使用数据对象上的常量指针初始化类
- 为什么我收到"从常量指针到指针的转换无效?
- C++/QT:使用指向私有成员的常量指针作为只读数据共享
- 是否可以使用非常量指针调用非常量函数,以及当两个unique_ptrs指向同一个对象时程序的行为方式?
- 为什么C++中没有常量引用,就像常量指针一样?
- 对于非常量指针类型的参数,未调用具有常量指针模板类型参数的功能
- 将常量指针强制转换为非常量
- 带有常量指针的矢量构造函数示例
- 什么是常量指针常量引用类型的参数?(const X* const & p)
- 在多线程函数中返回共享的常量指针会导致计时问题吗?
- 常量指针上的混乱
- 使用 static_cast 时指向常量指针的原因
- 如何在C++中定义常量指针数组?
- 测试此指针的常量指针性质
- 当常量指针用作函数的参数时
- C++ - 无法将顶部常量指针分配给另一个非常量指针
- 在不同类型之间转换常量指针
- 解构常量指针?
- 为什么 std::vector<>::const_reference 可以转换为非常量指针?