C、C++易错知识点杂记(4)

来源:互联网 发布:js touchend 触发多次 编辑:程序博客网 时间:2024/05/21 01:48

继承方式总结

继承方式总结父类成员publicprivateprotectpublic
private
protect
public
private
private
继承方式public
public
publicprivateprivateprivateprotectprotectprotect子类成员pubulic不可见protectprivate不可见privateprotect不可见protect

  1. public继承,不改变父类成员的访问属性;
  2. private继承,父类public成员和protect成员在子类中为private类型;
  3. 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++风格的强制转型。