zoukankan      html  css  js  c++  java
  • 虚拟继承中子类和父类的构造函数顺序1

    这里的inter1,2,3.要写base2的构造函数

    final也写,否则里面的数据未初始化

    inert2写的原因是假如有人使用直接使用inert2,里面数据就可以初始化了

    总结一下,虚拟继承的基类就像一个指针一样差不多,但又有分别,因为弄了 private会使用不了数据。

    以后每个要实现的类都要调用虚拟基类的构造函数,如上面的inter2.

    写上我个人测试代码

    class A{
    protected://不能写private
    	int a;
    public:
    	A(int x) :a(x){}
    };
    
    class B:virtual public A
    {
    
    public:
    	B(int x) :A(x){}
    };
    
    class C :virtual public A
    {
    public:
    	C(int x) :A(x){}
    	void display()
    	{
    		cout << a << endl;//这个A的数据可以在这里使用
    	}
    };
    
    class D :public B, public C
    {
    private:
    	int d;
    public:
    	D(int x, int y) :B(x), C(x), d(y),A(x){}//这个A(x)一定要写
    	void display()
    	{
    		cout << a << endl << d << endl;
    	}
    };
    
    int main()
    {
    	C c(1);
    	c.display();
    	D d(1, 2);
    	d.display();
    }
    

      

  • 相关阅读:
    Python open 读和写
    Sublime Text的使用
    解决MySQL Workbench导出乱码问题
    统计学(一)
    pymysql使用(二)
    使用pymysql(使用一)
    2个Excel表格核对技巧
    用Python读写Excel文件的方式比较
    从零上手Python关键代码
    php面试
  • 原文地址:https://www.cnblogs.com/vhyc/p/5582450.html
Copyright © 2011-2022 走看看