zoukankan      html  css  js  c++  java
  • C++虚函数

    1、在基类中将派生类会重新定义的方法声明为虚方法,基类用virtual声明成员函数为虚函数,=0表示该函数为纯虚函数

    2、纯虚函数的类不能创建对象,这种类称为抽象类。

    3、在编译过程中进行联编称为静态联编,在运行时编译的方法称为动态联编。C++中虚函数就是动态联编。静态联编的效率更高,但虚函数在运行之前不知道类型是什么,不知道哪个虚函数,所以为动态联编,如下b->View()调用的是BrassPlus中的方法。

    class Brass {
    public:
    virtual void View() const;
    }
    
    class BrassPlus:public Brass{
    public:
    virtual void View() const;
    }
    
    BrassPlus a;
    Brass *b;
    b=&a;
    b->View();

    3 、b是一个基类指针,但是可以调用同一类族中不同类的虚函数,这就是虚函数多态性

    4,虚函数的存储方式:每个类编译器都创建一个虚函数地址标,函数调用时埋在这个表中找到函数地址

    5、一般将基类的析构函数定义为虚函数,析构时先析构派生类,在析构基类。

    6、override可以避免派生类中忘记重写虚函数的错误,在派生类申明中加上override,如果没有被重写,编译器会报错。

    class BrassPlus:public Brass{
    public:
    virtual void View() const override;
    }
  • 相关阅读:
    (14) go 结构体
    (13) go map
    (12) go make初始化
    (11)go 数组和切片
    (10) go 错误
    (9) go 时间日期
    (8)go 字符串
    (7) go 函数
    (6) go 流程控制
    (5) go 格式化输入输出 类型转换
  • 原文地址:https://www.cnblogs.com/xiating/p/10625600.html
Copyright © 2011-2022 走看看