继承方式总结
父类成员 | public | private | protect | public | private | protect | public | private | private |
---|---|---|---|---|---|---|---|---|---|
继承方式 | public | public | public | private | private | private | protect | protect | protect |
子类成员 | pubulic | 不可见 | protect | private | 不可见 | private | protect | 不可见 | protect |
- public继承,不改变父类成员的访问属性;
- private继承,父类public成员和protect成员在子类中为private类型;
- protect继承,父类public成员和protect成员在子类中为protect类型。
C++ Casting Operators
C++ 有4中转换操作符:
static_cast 数制转换;
static_cast可以被用于强制隐型转换(例如,non-const对象转型为const对象,int转型为double等待),它还可以用于很多这样的转换的反向转换(例如,void*指针转型为有类型指针,基类指针转型为派生类指针)。
dynamic_cast 用于执行向下转换和在继承直接转换;
dynamic_cast主要用于执行“安全的向下转型(safedowncasting)”。也就是说,要确定一个对象是否是一个继承体系中的一个特定类型。它是唯一不能用旧风格语法执行的强制转型,也是唯一可能有重大运行时代价的强制转型。
reinterpret_cast 用于执行并不安全的implementation_depedent类型转换;
reinterpret_cast是特意用于底层的强制转型,导致实现依赖的结果。例如,将一个指针型转型为一个整数。这样的强制转型在底层代码以外应该极为罕见。
const_cast 去掉const
一般用于强制消除对象的常量性。它是唯一能做到这一点的C++风格的强制转型。