axe*_*axe 12 c++ const function member
今天我发现那样的代码可行.这对我来说听起来很奇怪,因为据我所知,你无法修改const成员函数中的任何成员.你实际上不能直接做,但你可以调用非const成员函数.如果将成员函数标记为const表示传递给函数的指针指向const对象,那么如何在示例下调用非const成员函数?
#include <iostream>
class X
{
public:
void foo() const
{
ptr->bar();
}
void bar() {}
private:
X * ptr;
};
int main()
{
}
Run Code Online (Sandbox Code Playgroud)
当你有一个指针成员时,那么该指针在 const 方法中就是 const 。您将无法更改存储在指针中的地址。但你可以随心所欲地改变指尖。
这是之间的区别
X* const cannot_change_pointer; //this is how top-level const applies to pointers
const X* cannot_change_pointee;
Run Code Online (Sandbox Code Playgroud)
更有趣的是,出于同样的原因,方法上的 const 对引用成员没有任何影响(const 方法只会阻止您引用其他无法通过引用完成的内容)。