为什么需要二阶构造模式? 1. 构造函数只能保证对象构造时被调用,不能保证一定构造成功(可能中途意外退出,此时得到合法的半成品对象); 2. 构造函数没有返回值,外部无法判断对象是否构造成功(半成品对象存在安全隐患);
1. 同名覆盖是继承时发生在父类和子类之间,子类同名成员覆盖(屏蔽)父类同名成员的现象;2. 函数重写也是同名覆盖,函数重写多态实现才有意义,C++通过`virtual`支持多态;3. 多态是面向对象组件化程序设计的基础特性
- 操作符重载的本质是通过函数扩展操作符的功能- 操作符重载函数使用`operator`关键字- 全局函数和成员函数都可实现操作符的重载,二者同时存在时,优先使用成员操作符重载函数- 成员操作符重载函数比全局操作符重载函数少一个参数- 成员函数操作符重载函数不需要友元,对类封装性更好- 操作符重载遵循函数重载规则
const成员变量为只读变量,只能通过初始化列表初始化 const成员函数不能直接改写成员变量的值,并且只能调用const成员函数 const对象为只读对象,只能调用const成员函数,非const对象也可以调用const成员函数
1. 虚函数在父类中必须实现,而纯虚函数在父类中不实现,纯虚函数实现后就有了虚函数;2. 拥有纯虚函数的类就是抽象类,抽象类不能定义对象,若子类不实现纯虚函数,则子类也成为抽象类;3. 接口也是抽象类,但接口只有纯虚成员函数。
静态成员变量和静态成员函数都是类所有,对象共享,既可以通过类名访问,也可以通过对象访问。通过类名访问的前提是该变量是公有的,静态成员变量需要在类外单独分配空间,静态成员函数只能访问静态成员变量。
C++类中经常会用到3个关键字:`public`,`private`,`protected`,用以限定访问级别以及继承方式。其中,用作访问级别限定时修饰的是**类内成员**,而用作继承方式时修饰的是**类名**。
赋值兼容性:子类可以当成父类使用
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号