簡體   English   中英

如何在轉換為基數 class 后讓 C++ 調用重寫方法

[英]How to have C++ call overridden method after a conversion to the base class

我有一個 class A 方法你好:

class A {
 public:
  void Hello(){
     std::cout << "Hi from class A!" << std::endl;
  }
};

然后我有一個 class B 繼承了 class A 並且有自己的 Hello 方法:

class B : public A {
 public:
  void Hello(){
     std::cout << "Hi from class B!" << std::endl;
  }
};

我創建了一個新的 class B 的 object,然后將其轉換為 class A 類型。

B myB;
A myA = static_cast<A>(myB);

我該怎么做myA.Hello(); 打印“你好,來自 class B?”?

您應該使用參考並可以調用 Hello()

    B myB;
    A& myA = static_cast<A&>(myB);
    myA.Hello();

輸出:

Hi from class A!

如果將“虛擬”添加到 class A 的 Hello(),

virtual void Hello() {

您可以在下面獲得 output。

Hi from class B!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM