私はクラスAとBを持っています。
class A{
public:
foo();
};
class B : public A{
public:
int x;
};
テストファイルにBクラスのオブジェクトがあると仮定します。foo関数を呼び出すにはどうすればよいですか?
object.foo(); // or
object.A::foo();
その他の質問:いつそのような関数を呼び出すのですか?多重継承を行うとどうなりますか?
私はクラスAとBを持っています。
class A{
public:
foo();
};
class B : public A{
public:
int x;
};
テストファイルにBクラスのオブジェクトがあると仮定します。foo関数を呼び出すにはどうすればよいですか?
object.foo(); // or
object.A::foo();
その他の質問:いつそのような関数を呼び出すのですか?多重継承を行うとどうなりますか?
単純object.foo()
に、これ以上追加することはありません。
B object;
object.foo();
クラス B はクラス A のパブリック メンバーを継承するため、関数foo()
もクラス B に属し、B クラスのオブジェクトを使用して呼び出すことができます。
B b;
b.foo();
C++ の継承について知っておく必要があります。とまったく同じ
b.x;
どちらもオブジェクトのメンバーでありx
、クラス B のオブジェクトであり、クラス A からのクラス B の継承機能により、コード関数でその可能性があります。foo()
b
b
foo()
注クラス 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;
また、x
、y
、foo()
すべてがクラス C のメンバーです。
注意: 私が言ったのはマルチレベルですC++ の多重継承は異なります。また、C++ の 3 つのアクセス指定子は、継承の場合に非常に重要です: public private protected in c++