const_cast: 转化掉表达式的const性质
static_cast:编译器隐式执行的转化都可通过此完成。例如将void* 指针转化为typed指针
reinterpret_cast意图执行低级转型,例如将pointer to int 转化为int
dynamic_cast:执行安全向下转型,用来决定某对象是否guis
(1)reinterpret_cast用在任意指针(或引用)类型之间的转换,可能导致程序不安全或者破坏;(2)以及指针与足够大的整数类型之间的转换;(3)从整数类型(包括枚举类型)到指针类型,无视大小
static 和reinterpret_cast区别:
Student s;
Man* man;
man = reinterpret_cast<Man*>(&s) ; //success
man = static_cast<Man*>(&s) ;//error Man 与Student类型无关
dynamic_cast:执行安全向下转型,用来决定某对象是否归属于继承体系中的某个类型。 RTTI技术,待续
内部类(嵌套类):
c++不能再函数中定义函数,但是可以在类中定义类。与java内部类的最大区别是:
1.c++的内部类对象
没有外部类对象的指针,
不能访问外部类对象的非静态成员;
2.java的非静态内部类对象
有外部类对象的指针,
能访问外部类对象的非静态成员。
c++的内部类对象
没有外部类对象的指针,
不能访问外部类对象的非静态成员;
java的非静态内部类对象
有外部类对象的指针,
能访问外部类对象的非静态成员。