C++ 继承类 有四个类 A , B, C , D
A 是基类,B, C 都继承A, D是继承B ,C 的类;
我的写法是这样的:
#include<iostream>
using namespace std;
class A{
public:
int a;
A(int n) {
a = n;
cout<<"A::a="<< a <<endl;
}
};
class B:public A{
public:
int b;
B(int a0 , int n) :A(a0){
b = n;
cout<<"B::b="<< b <<endl;
}
};
class C: public A{
public:
int c;
C(int a0, int n) :A(a0){
c = n;
cout<<"C::c="<< c <<endl;
}
};
class D: public B , public C {
public:
int d;
A(int a0 , int b0 , int c0 , int d0) : B(a0,b0) , C(a0,c0){
// 上面的这一句出错了, 平时单继承的时候就是这样写的,这个不知道怎么
d = d0;
cout<<"D::d="<< d <<endl;
}
};
注释里说的那样, 那里编译出错,哪位高手指点一下!!!(急需) ------解决方案-------------------- 最后构造函数错了A(int a0 , int b0 , int c0 , int d0) : B(a0,b0) , C(a0,c0)
应该是D{}啊 你写A了。 ------解决方案--------------------
菱形继承。
#include <iostream>
using namespace std;
class A
{
public:
int a;
A(){}
A(int n)
{
a = n;
cout<<"A::a="<< a <<endl;
}
};
class B: virtual public A{
public:
int b;
B(int a0 , int n) :A(a0){
b = n;
cout<<"B::b="<< b <<endl;
}
};
class C: virtual public A{
public:
int c;
C(int a0, int n) :A(a0){
c = n;
cout<<"C::c="<< c <<endl;
}
};
class D: public B , public C {
public:
int d;
D(int a0 , int b0 , int c0 , int d0) : A(a0), B(a0,b0) , C(a0, c0)
{
d = d0;
cout<<"D::d="<< d <<endl;
}
};