常量成员函数

先看这个例子

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 成员函数,则是错误的。

你可能感兴趣的:(function)