成员函数通过名为this的额外隐式参数来访问调用它的那个对象。例如调用
total.isbn()
编译器负责将total的地址传递给this,等价于编译器将该调用重写如下
std::string isbn() const { return bookNo; } //函数定义
Sales_data::isbn(&total) //伪代码,Sales_data是类名
任何对类成员的直接访问都被看做this的隐式引用,当isbn使用bookNo时候,相当于
this->bookNo
isbn函数的const关键字的作用:修改隐式this指针的类型
默认情况下,this是常量指针(const pointer),这意味着无法将this绑定到一个常量对象上,也就是无法在一个常量对象上调用普通的成员函数。
因此通过const关键字,相当于将this声明成指向常量的常量指针(const pointer to const)
const Sales_data *const
像这样使用const的成员函数被称作常量成员函数(const member function)
同时,因为this指向常量,这样做也就无法通过常量成员函数,来改变调用了函数的对象的内容。