notes/ch07.md
. 调用成员函数。const或引用类型成员以及没有默认构造函数的类类型的任何成员使用初始化式。ConstRef::ConstRef(int ii): i(ii), ci(i), ri(ii) { }Sales_item(const std::string &book): isbn(book), units_sold(0), revenue(0.0) { }*this:
this。this总是指向当前对象,因此this是一个常量指针。const,改变了隐含的this形参的类型,如 bool same_isbn(const Sales_item &rhs) const,这种函数称为“常量成员函数”(this指向的当前对象是常量)。return *this;可以让成员函数连续调用。const成员函数:this是指向类类型的const指针(可以改变this所指向的值,不能改变this保存的地址)。const成员函数:this是指向const类类型的const指针(既不能改变this所指向的值,也不能改变this保存的地址)。public部分。Sales_item(): units_sold(0), revenue(0.0) { }=default要求编译器合成默认的构造函数。(C++11)Sales_item(): units_sold(0), revenue(0.0) { }public:定义在 public后面的成员在整个程序内可以被访问; public成员定义类的接口。private:定义在 private后面的成员可以被类的成员函数访问,但不能被使用该类的代码访问; private隐藏了类的实现细节。class或者 struct:都可以被用于定义一个类。唯一的却别在于访问权限。
class:在第一个访问说明符之前的成员是 priavte的。struct:在第一个访问说明符之前的成员是 public的。friend开始。 friend Sales_data add(const Sales_data&, const Sales_data&);表示非成员函数add可以访问类的非公有成员。inline:
inline。mutable size_t access_ctr;const,即使它是const对象的成员。python使用赋值的方式有时候不行,比如const或者引用类型的数据,只能初始化,不能赋值。(注意初始化和赋值的区别)C++11)Sale_data(): Sale_data("", 0, 0) {}仅一步类型转换。explicit加以阻止。explicit构造函数只能用于直接初始化,不能用于拷贝形式的初始化。public的。virtual函数。constexpr函数的参数和返回值必须是字面值。constexpr构造函数。constexpr构造函数。static数据成员存在于类类型的每个对象中。static数据成员独立于该类的任意对象而存在。static数据成员是与类关联的对象,并不与该类的对象相关联。static。::直接访问静态成员:r = Account::rate();r = ac.rate();static。double Account::interestRate = initRate();constexpr。