const` 关键字位于函数签名的末尾
在 C++ 中,const
关键字可以应用于成员函数,表示该函数不会修改对象的成员变量。
const
出现在 operator->()
成员函数的末尾,这意味着该成员函数在调用时不会修改对象的任何成员变量。
如下:
node* operator->() const { return p; }
1. const
的作用
const
关键字位于函数签名的末尾,表示这是一个常量成员函数。- 常量成员函数的主要特性是:它不能修改类的任何非
mutable
的成员变量,并且只能调用类的其他const
成员函数。
2. 为什么要加 const
?
加上 const
的目的是允许该成员函数在一个常量对象上被调用。例如,如果对象是 const
,那么只能调用 const
成员函数。
如果你不加 const
,在常量对象上调用该成员函数时会出现编译错误。
3. 若不加 const
的问题
如果你没有在 operator->()
的末尾加上 const
,你将无法在常量对象上调用它:
const Wrapper w(&n); // 常量对象
// 如果 operator->() 不是 const,下面这行代码会报错
std::cout << w->value << std::endl;
总结:
const
成员函数表示函数不会修改对象的成员变量,因此可以在const
对象上调用。- 在
operator->()
函数末尾加const
,允许你在const
对象上使用箭头操作符来访问封装的指针。
如果不加const
,在const
对象上调用该函数时会报错。