面向对象-多态
派生类构造函数执行的次序
- 调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左到右);
- 调用内嵌成员对象的构造函数,调用顺序按照它们在类中声明的顺序;
- 派生类的构造函数体中的内容。
全局对象和局部对象
全局对象的构造函数在main函数之前调用,析构函数在main函数之后调用。
局部栈对象在定义的时候调用构造函数,出了可见范围的时候调用析构函数。
堆对象在new的时候调用构造函数,delete的时候调用析构。
全局静态对象和全局对象一样。
局部静态对象在定义的时候调用构造,main函数之后调用析构
C++和java的区别
- java是一次编写多处运行,c++是一次编写多处编译
- Java不支持操作符重载,操作符重载被认为是c++的突出特征
- java没有函数指针机制,c++支持函数指针
强制类型转换
dynamic_cast将一个基类对象指针(或引用)cast到继承类指针,dynamic_cast会根据基类指针是否真正指向继承类指针来做相应处理, 即会作一定的判断。 对指针进行dynamic_cast,失败返回null,成功返回正常cast后的对象指针; 对引用进行dynamic_cast,失败抛出一个异常,成功返回正常cast后的对象引用。
reinterpret_cast这个转换是最“不安全”的,两个没有任何关系的类指针之间转换都可以用这个转换实现。
static_cast静态转换是最接近于C风格转换,很多时候都需要程序员自身去判断转换是否安全。
const_cast这个转换好理解,可以将常量转成非常量。
作者:弦断
出处:http://www.cnblogs.com/ucas/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。