簡體   English   中英

使用派生 class 創建基數 class object

[英]Creating base class object with a derived class

我有以下代碼:

class A {
public:
    A() { cout << "A()" << endl; }
    void f() { cout << "A" << endl; }
};

class B : public A {
public:
    B() { cout << "B()" << endl; }
    void f() { cout << "B" << endl; }
    void ff() { cout << "ff()" << endl; }
};

int main()
{
    A a = B();
    B b;
    a = b;
}

如何調用A a = B(); 將不同於A a = A(); 為什么可以從派生 class 轉換為基數 class?

當你做A a = B(); , class A復制構造函數應在調用 class B的默認構造函數后調用(注意:編譯器可能會使用復制 elison刪除不必要的副本)。

A(const A& other)
{

}

由於 class B的 object 可以傳遞給 class A的復制構造函數,因此它是允許的,但您可能會遇到對象切片

如果您想知道“如何將派生的 class object 傳遞給接受基 class 引用的方法”,請閱讀以下內容:

  1. 是否可以通過引用 function 以基數 class 作為參數來傳遞派生類

暫無
暫無

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

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