先看这个例子
bool Sales_item::same_isbn(const Sales_item &rhs) const
{ return (isbn rhs.isbn);}
蓝色的const用于修饰显示传入的形参rhs,而对于类的成员则有隐式的,而外的this指针作为形参传入,而红色部分的const正是修饰这部分参数this;
const 成员函数的引入
现在,可以理解跟在Sales_item 成员函数声明的形参表后面的const 所起的作用了: const改变了隐含的this 形参的类型。在调用total.same_isbn(trans) 时,隐含的this 形参将是一个指向total 对象的const Sales_item*类型的指针。就像如下编写same_isbn 的函数体一样:
/ / pseudo-code illustration of how the implicit this pointer is used
/ / This code is illegal: We may not explicitly define the this pointer ourselves
/ / Note that this is a pointer to const because same_isbn is a const member
bool Sales_item::same_isbn(const Sales item *const this ,const Sales_item &rhs) const
{ return (this->isbn rhs.isbn);}
用这种方式使用const 的函数称为常量成员函数(const member function) 。由于this 是指向const 对象的指针,const 成员函数不能修改调用该函数的对象。因此,函数avg-price
和函数sarne isbn 只能读取而不能修改调用它们的对象的数据成员。
NOTE:
const对象指向const的指针或引用只能用于调用其const成员函数如果尝试用它们来调用非const 成员函数,则是错误的。
本文解析了C++中const成员函数的概念及其作用,详细解释了如何通过const关键字限制成员函数对对象状态的修改,并探讨了const成员函数如何影响对象的使用方式。


1724

被折叠的 条评论
为什么被折叠?



