示例如何进行多重继承?

时间:2010-08-25 18:51:33

标签: c++

有人可以给我一个例子:我如何多次继承int,从第一个类和char中浮出,从第二个类到第三个类的字符串?

4 个答案:

答案 0 :(得分:4)

class A
{
  private:
    int i;
    float f;
};

class B
{
  private:
    char c;
    std::string s;
};

class C : public A, public B
{
};

C类型的对象现在包含成员ifcs。请注意,您将无法从C的方法中访问这些成员,因为它们分别对AB保密。要从C方法中访问这些方法,它们必须最初声明为publicprotected而不是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 { /* ... */ };