12.1 类的定义和声明
class Screen;//这个是向前声明
当只有向前声明出现过,数据成员只能是该类型的引用或者指针
12.2 隐含的this指针
class Screen
{
mutable
size_t access_ctr;//mutable使得该变量可以在const函数中被修改
};
12.4 构造函数
1) const对象的初始化也要在普通的构造函数中进行,但是static const 则在类定义体中初始化
2) 初始化列表
初始化列表存在的必要性: 为没有默认构造函数的类类型成员初始化,为const,引用类型的成员初始化
初始化列表初始化的顺序是变量声明的顺序.
3) 隐式类类型转换
例子 :
因为string类中有用char*初始化的构造函数,所以当出现这种情况的时候
class A{
void function a(string str);
};
调用的时候
a(“bbb”);// “bbb”将隐式地被转换为string(“bbb”);
抑制由构造函数定义的隐式转换
class A{
explicit bool function a(string str);//explicit只用在构造函数上
};
4) 类成员的显式初始化
12.5 友元
class A{
friend class B;
};
class A{
friend bool B::function();
};
友元标识的位置可以在类中的任意位置
12.6 static
类中static 函数没有this指针,可用做默认实参