本章开始介绍C++的OO部分。

class和struct只在访问权限上有差异。

定义在类里面定义的方法都是隐式的ininline

如果方法在类外定义,这时若要把它声明成inline,尽管同时在声明和定义都加上inline是合法的,但推荐只在定义时加。

关于this

this是当前对象的指针。我们可以写成this->bookNo,它是个常量指针。

const成员方法

std::string isbn() const {return bookNo;}

默认地,this是个const指针,指向一个非const的对象。举个例子,对于A类,它的this的 类型就是A *const

如果一个成员方法不会改变其对象,即这时this应该是const A *const的。因为this是隐式的,不能 直接传递,所以在成员方法后面加上const

这样其内部伪代码类似于:

std::string A::isbn(const A *const this) {return bookNo;}

const对象,指向const对象的指针或引用,只能调用const成员方法。

返回this对象

A& someFunc()
{
    return *this;
}

对于一些和类相关的工具函数,比如add, read, print等。尽管和类相关,但不是其成员。但我们还是 推荐放在一个头文件声明。