1

私はクラスAとBを持っています。

class A{
public:
    foo();
};

class B : public A{
public:
    int x;
};

テストファイルにBクラスのオブジェクトがあると仮定します。foo関数を呼び出すにはどうすればよいですか?

object.foo(); // or
object.A::foo();

その他の質問:いつそのような関数を呼び出すのですか?多重継承を行うとどうなりますか?

4

2 に答える 2

3

単純object.foo()に、これ以上追加することはありません。

B object;
object.foo();
于 2013-03-19T16:49:08.777 に答える
1

クラス B はクラス A のパブリック メンバーを継承するため、関数foo()もクラス B に属し、B クラスのオブジェクトを使用して呼び出すことができます。

B b;
b.foo();

C++ の継承について知っておく必要があります。とまったく同じ

b.x; 

どちらもオブジェクトのメンバーでありx、クラス B のオブジェクトであり、クラス A からのクラス B の継承機能により、コード関数でその可能性があります。foo()bbfoo()

クラス A には、メンバー関数 foo() が 1 つだけあります。

A a;
a.foo(); 

有効ですが、

a.x; 

有効じゃない

編集: マルチレベル継承 クラス C はクラス B を継承し、クラス B はクラス A を継承します。

class C : public B{
public:
    int y;  
};

C c;
c.foo();  // correct

も有効です。

c.x;
c.y;

また、xyfoo()すべてがクラス C のメンバーです。

注意: 私が言ったのはマルチレベルですC++ の多重継承は異なります。また、C++ の 3 つのアクセス指定子は、継承の場合に非常に重要です: public private protected in c++

于 2013-03-19T16:52:17.283 に答える