protected继承:
关键字protected
与private
相似,在类外只能用公有成员函数来访问类成员。派生类的成员可以直接访问基类的保护乘员,但不能直接访问基类的私有成员。
抽象基类
C++使用纯虚函数提供未实现的函数。春旭函数的结尾处为=0
类声明中包含纯虚函数,则不能创建该类的对象。从抽象基类派生出的类的具体特征。
类设计回顾
编译器生成的成员函数
- 默认构造函数
要么没有参数,要么所有参数默认为0. - 复制构造函数
浅复制,,若需要深复制,则重定义 - 赋值运算符
浅复制,若需要深复制,则重定义
其他类的方法
- 构造函数
构造函数不被派生类继承。 - 析构函数
对于基类,应定义虚析构函数。若使用new
则需显示定义析构函数 - 转换
C++11支持将关键字explict
用于转换函数。explicit
允许使用强制类型传唤,但不允许隐士转换。
explicit class_name(double){}//将double型转换为类
- 按值传递和传递引用
通常采用按引用传递,因为效率高,不会生成临时拷贝。 - 返回对象和返回引用
同上。 - 使用const
使用const可确保方法不修改参数
class_name::class_name(const char *s);
使用const确保方法不修改调用它的对象
void class_name::show() const {};
使用const确保引用或指针返回的值不能用于修改对象中的数据
class_name::show() const
赋值运算符不能被继承,友元函数不是类成员,所以也不能被继承。
派生类的构造函数自动调用基类的构造函数
派生类构造函数显示的调用成员初始化列表中指定的基类构造函数
派生类方法可使用作用域解析运算符调用公有和保护基类方法