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();
    }
    

      

  • 相关阅读:
    BSGS算法(大步小步算法)
    UVA-11426【GCD
    UVA-1637【Double Patience】(概率dp)
    UVA-11174【Stand in a Line】
    About
    51nod 1355 斐波那契的最小公倍数
    CodeForces
    CodeForces
    CodeForces
    CodeForces 901C Bipartite Segments
  • 原文地址:https://www.cnblogs.com/vhyc/p/5582450.html
Copyright © 2011-2022 走看看