Chapter 7: Classes
Classes
- this: 使用实例化的Obj调用类方法时,隐式传入参数this,告诉类方法这个Obj的地址
- const 修饰成员函数参数列表:常量成员函数,不能修改类成员,也不能调用非const成员函数,对类只读
- 类的外部定义成员函数:class::funtion。成员函数的声明必须在类中完成
1 | Sales_data& Sales_data::combine(const Sales_data &rhs) |
- 构造函数:C++编译器存在默认构造函数。可自定义构造函数
1 | Sales_data(const std::string &s, unsigned n, double p):bookNo(s), units_sold(n), revenue(p*n) {} |
构造函数一般时public的,但是存在例外
- 通过静态public函数保证该类只有一个实例时,构造函数只能通过这个静态函数调用
1 | class Singleton { |
- 禁止实例化的工具类
访问控制与封装
public: 外部可访问;private: 外部不可访问
sturct: 默认访问权限是public;class: 默认访问权限是private。希望类所有成员是public时使用struct,否则使用class
友元函数:在类内部声明的可以访问类成员的函数
1 |
|
- 如果成员是const或者是引用,必须对成员进行初始化。
- 委托构造函数:使用所属类的其他构造函数构造自己。
类的静态成员
与类本身直接相关,不是与类的哥哥对象关联
声明: static,在外部定义时不需要static,只有声明需要
初始化: 通常不应该在类内进行初始化,但是可以提供const类型的初始值,不过要求静态成员必须是字面值常量类型的constexpr
静态成员和指针可以是不完全类型,而普通成员不行;不完全类型:前向声明,数组类型,递归类型声明
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 ZuowangDev's Blog!