c++ 知识点整理(自用)

1 虚函数

https://blog.csdn.net/weixin_45138932/article/details/125667041
定义:

  • 实现动态联编,在函数运行阶段动态的选择合适的成员函数。
  • 在定义了虚函数后,可实现在派生类中对虚函数进行重写,从而实现统一的接口和不同的执行过程。

难点:

  • 如果要不通过继承关系也实现出运行时多态的效果,则需要将两个不同类的同名函数都加上virtual关键字;同时,需要将定义的指针指向其他对象时,要进行强制类型转换。(因为两个类已经没有继承关系了,不能通过赋值兼容规则进行自动转换,所以要强制转化。)
  • 带有多态性质的基类均应该声明一个virtual析构函数。同时如果任一class带有任何virtual函数,它就应该拥有一个virtual析构函数。
    例:
class A{
public:
    A(){};
    ~A(){};
    virtual void show(void){
        cout<<"I am A!"<<endl;
    }
  • 当class的设计目的如果不是作为base class使用,或不是为了具备多态性,则就不该声明virtual析构函数。(因为如果class中含有virutal函数会使得该class的体积增加,因为添加一个vptr(virtual table pointer)会增加其class大小达50%-100%)
  • 程序运行时先看父类再看子类
  • 虚函数要多态的时候不内联,不多态的时候(也就是非指针、引用,也就是传值)可以内联。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值