0

次のクラスでは、派生オブジェクトをベース ポインターにアップキャストします。次に、メインから派生した「プライベート」メンバー関数を呼び出すことができます。これはどのように可能ですか?私の推測では、関数を呼び出す (つまり、アクセスする) ことができるかどうかは、L 値 (Base* b) に基づいています。どの関数が呼び出されるかは、仮想であるため R-value(new Derived) に基づいています。誰かが私のためにこれを明確にしてもらえますか?

#include <iostream>

class Base
{
  public :
  virtual void func1()
  {
    std::cout<<"Base func1";
  }
};

class Derived : public Base
{
  private :
  void func1()
  {
    std::cout<<"Derived Func1";
  }
};

int main()
{
  Base* b = new Derived;
  b->func1();
}

私の出力は

Derived func1
4

0 に答える 0