-1
我有一個類型爲A的對象列表,其中可能包含從A派生的任何數量的類的實例。我在列表中的每個成員上調用一個函數,並且希望函數從最派生的類被調用。但是,調用基類的功能。我怎樣才能讓它成爲使用最派生類的情況?從大多數派生類調用虛函數
以下代碼說明了我的問題。代碼輸出「In a」,但我希望它輸出「In b」。
#include <iostream>
class A {
public:
virtual void func()
{
std::cout << "In A" << std::endl;
}
};
class B : public A {
public:
virtual void func()
{
std::cout << "In B" << std::endl;
}
};
int main()
{
A a = B();
a.func();
return 0;
}
感謝勒夫,這解決了我的問題 – JHobern
或者使用智能指針! std :: unique_ptr和std :: shared_ptr – Ceros
@Ceros這些只是一般指針的變體。而且我也不會推薦使用新的智能指針作爲簡單的自動刪除指針,而是作爲*擁有*模型的一部分。 –