首页 > 其他 > 详细

菱形继承-虚继承-静态成员

时间:2020-02-16 21:19:19      阅读:71      评论:0      收藏:0      [点我收藏+]

菱形继承

技术分享图片

  • 最底下子类从基类继承的成员变量冗余,重复
  • 最底下子类无法访问基类的成员,有二义性

虚继承

  • 虚继承可以解决菱形继承带来的问题
  • 两个虚继承共用一个m_age
  • Person类被称为虚基类
    技术分享图片
struct Person { int m_age;};
struct Student : virtual Person { ...};
struct Worker : virtual Person { ...};
struct Undergraduate : Student, Worker { ...};
  • 虚表指针与本类起始的偏移量(一般是0)
  • 虚基类第一个成员变量与本类起始的偏移量

    注意上面两句话,这不是学习的环境,因为你只能看见以上两句话,看不懂可以直接放弃理解。学习环境为视频加比喻加图片,生动形象。

  • 真实的学习环境理解方式为:仓库拿东西时,你一进门有人告诉你,前面第8个房间(偏移量8)
    技术分享图片
  • 啥时候不能放弃?发现新东西时。在知识面逐渐充足时,明明万事俱备只欠东风时,就需要坚持下去。

静态成员(static)

  • 静态成员:被static修饰的成员变量\函数
  • 存储在数据段(全局区,类似于全局变量),整个程序运行过程中只有一份内存
class Car {
public:
    static int m_price;
    void run() {
        cout << "run()" << endl;
    }
};

// 初始化成员变量
int Car::m_price = 0;

int main() {
    Car car1;
    car1.m_price = 100;

    Car car2;
    car2.m_price = 200;

    Car::m_price = 300;

    getchar();
    return 0;
}

菱形继承-虚继承-静态成员

原文:https://www.cnblogs.com/sec875/p/12317570.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!