关于动态内存分配:
1.new 和 malloc 的区别是什么?
new 关键字是c++的一部分
malloc是由c库提供的函数
new以具体类型为单位进行内存分配
malloc 以字节为单位进行内存分配
new 在申请内存空间时可以进行初始化(自动调用构造函数)
malloc仅根据需要申请定量的内存空间
关于虚函数:
构造函数是否可以成为虚函数?
答:构造函数不可能成为虚函数,因为在构造函数执行结束后,虚函数表指针才会被正确的初始化
扫描二维码关注公众号,回复:
6009589 查看本文章
析构函数是否可以成为虚函数
答:建议在设计会被继承的基类时,将析构函数声明为虚函数
关于多态:
构造函数和析构函数中是否可能发生多态?
构造函数中不可能发生多态行为,在构造函数执行时,虚函数表指针未被正确初始化
析构函数中不可能发生多态行为,在析构函数执行时,虚函数表指针已经被销毁
若在构造函数和析构函数中调用多态,则程序只会调用当前类中定义的函数版本
关于强制类型转换:
dynamic_cast 是与继承相关的类型转换关键字
dynamic_cast 要求相关的类中必须有虚函数
用于有直接或间接继承关系的指针(引用)之间
指针: 转换成功:得到目标类型的指针
转换失败:得到一个空指针
引用: 转换成功:得到目标类型的引用
转换失败: 得到一个异常操作信息