7类
This是一个常量的指针,把const关键字放在成员函数的参数列表之后,此时,紧跟在参数列表之后const表示this是一个指向常量的指针。
如果非成员函数是类接口的组成部分,则这些函数的声明应该与类在同一个文件夹内。
构造函数的名字与类名相同,和其他函数不一样的是,构造函数没有返回类型,除此之外类似于其他的函数,构造函数也有一个(可能为空的)参数列表和一个(可能为空的)函数体。
编译器会合成默认的拷贝、赋值和析构函数。
访问说明符:public private
Class在访问说明符定义之前的成员为private的,struct则是public。
友元:其他类或者函数访问它的非公有成员。前加friend。

友元的声明仅仅指定了访问的权限,不是一个通常意义上的函数声明。类的用户还要在友元声明之外在对函数进行声明。
7.3类的其他特性
可变数据成员,通过mutable关键字,可以修改类的某个数据成员,甚至是const成员函数。
友元函数能定义在类的内部,这样的函数是隐式内联的。


不完全类型,只声明无定义的类。
友元在类内部定义,外部也必须进行声明,类的用户才能使用。
编译器处理完类中的全部声明后才会处理成员函数的定义。
类型名要特殊处理,类外面用typedef定义一种数据类型,类的内部不能在定义这个名字了。
函数名字查找
先在成员函数内->类->类外面
构造函数初始值列表
类内成员是const或者是引用的话,必须将其初始化,类似的,当成员属于某种类类型且该类没有定义默认构造函数时,也必须将这个成员初始化。
如果类内一个成员是用另一个成员初始化的,这个两个成员的初始化顺序很关键。
委托构造函数


默认构造函数的作用

警惕这种错误

隐式的类类型转换
Explicit抑制隐式转换,只能显示调用。

7.5.5聚合类

7.5.6字面值常量类

7.6类的静态成员
静态数据成员的类型可以是常量、引用、指针、类类型。
静态成员函数也不与任何对象绑定在一起,它们不包含this指针。静态成员函数不能声明成const的,也不能在static函数体内用this指针。
成员函数不用通过作用域运算符就能直接使用静态成员;
网友评论