构造函数
类通过一个或者几个特殊的成员函数控制对象的初始化过程
- 构造函数的名字和类名相同,没有返回类型
- 构造函数有一个可能为空的参数列表(无参构造函数)和一个可能为空的函数体
- 不同构造函数之间的参数数量必须不同或参数类型有区别
- 构造函数不能被声明成const
构造函数初始值列表
如果成员是const、引用,或者是属于某种未提供默认构造函数的类类型,必须通过构造函数初始值列表为这些成员提供初值。
- 最好成员声明的顺序和初始化顺序一致
访问控制
class关键字与struct定义类唯一的区别是默认的访问权限
- class private
- struct public
友元
类可以允许其它类或者函数访问它的非公有成员,friend关键字开始的函数声明语句
- 每个类负责控制自己的友元类或者友元函数,友元不具有传递性
- 友元声明只能出现在类定义的内部,类内具体位置不限
显示构造函数
-
关键字explicit只对一个实参的构造函数有效,需要多个实参的构造函数不能用于执行隐式转换,只能在类内生命构造函数时使用explicit关键字
-
隐式转换发生在拷贝初始化(=),直接初始化不能用于explicit
聚合类
用户可以直接访问其成员
- 所有成成员都是public
- 没有定义任何构造函数
- 没有类内初始值
- 没有基类,没有virtual函数
类的静态成员
- 静态成员函数不与任何对象绑定在一起,不包含this指针,静态成员函数不能声明为const
- static关键字只出现在类内部的声明语句中
- 类的静态成员不应该在类的内部初始化,但可以为静态成员提供const整数类型的类内初始值