有人可以给我一个例子:我如何多次继承int,从第一个类和char中浮出,从第二个类到第三个类的字符串?
答案 0 :(得分:4)
class A
{
private:
int i;
float f;
};
class B
{
private:
char c;
std::string s;
};
class C : public A, public B
{
};
C
类型的对象现在包含成员i
,f
,c
和s
。请注意,您将无法从C
的方法中访问这些成员,因为它们分别对A
和B
保密。要从C
方法中访问这些方法,它们必须最初声明为public
或protected
而不是private
,但这不是好设计。< / p>
答案 1 :(得分:2)
通常,您不使用多重继承来访问数据(数据通常应该是私有的,因此派生类无论如何都无法访问它。)
多重继承基本上会生成一个具有多组属性的对象。例如,考虑门,一些木材和一些钢材:
class steel {
unsigned int AISI_number;
char Rockwell_scale;
unsigned int Rockwell_number;
};
class wood {
double density;
std::string species;
};
class door {
int width;
int height;
unsigned char num_hinges;
};
class wooden_door : public wood, public door {};
class steel_door : public steel, public door {};
这有点做作,因为我们实际上非常关心钢门中的钢材(例如,它是1020钢已经硬化到Rockwell C40),但我希望这个概念很普遍无论如何都来了。 [是的,我知道所有的数据都是不可访问的,因为它都是私有的,并且没有代码可以在任何类中访问它...]
答案 2 :(得分:1)
你的意思是从具有int和float字段的类继承,还是包含char和string字段的第二个类?
class1
{
int anInt;
float aFloat;
}
class2
{
char aChar;
string aString;
}
class3 : public class1, public clas2
{
...
}
答案 3 :(得分:0)
1)你可以从基地继承 类型。
2)正常倍数 继承看起来像这样:
class A { /* ... */ };
class B { /* ... */ };
class C { /* ... */ };
class X : public A, private B, public C { /* ... */ };