面向对象-多态

派生类构造函数执行的次序

  • 调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左到右);
  • 调用内嵌成员对象的构造函数,调用顺序按照它们在类中声明的顺序;
  • 派生类的构造函数体中的内容。

全局对象和局部对象

全局对象的构造函数在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这个转换好理解,可以将常量转成非常量。

posted @ 2016-08-30 19:22  弦断  阅读(186)  评论(0编辑  收藏  举报