C++继承多态面试题

(一)类的编译顺序,构造顺序,析构顺序

类的编译顺序:类名->成员名->成员方法体
类的构造顺序:成员对象->类对象
子类构造顺序:父类->子类
子类析构顺序:子类->父类

(二)重载,隐藏,覆盖

重载:函数名相同 参数列表不同 作用域要相同
隐藏:子类隐藏父类中同名的成员方法
覆盖:子类覆盖父类中相同的虚成员方法 (相同表示 同名 同返回值 同参数列表)

(三)四种类型强转
(1)const_cast:去掉const属性的类型强转
如:const int a = 1; int b = const_cast<int>(a);  //去掉a修饰的const
(2)static_cast:编译器认为安全的
如:int a; double b = static_cast<double>(a);
(3)dynamic_cast:运行时期的类型强转,依靠RTTI(重要)
1.必须是指针
2.必须是继承关系的类型指针
3.有RTTI(存在于虚表里,运行时的类型),即有虚表

(4)reinpreter_cast:强制转换 (int)a

(四)虚表什么时候产生?存放在哪里?
答:存放在.rodata段,数据段编译期生成

(五)静多态,动多态                                                                                                                                                                    静多态:编译时期决定的多态   如:重载(编译期调用),模板
动多态:运行时期的多态,运行时才知道调用哪个成员方法。如

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值