有什麼方法可以在新派生類實例時向基類提供構造函數參數? (也就是說,當基類構造函數具有這些參數的默認值時)在創建派生類實例時提供基類構造函數參數
例如,
class Base
{
public:
Base::Base(string name = "")
: m_name(name) {};
private
string m_name;
};
class Derived : public Base
{
public:
Derived::Derived() {};
};
然後,我需要做這樣的事情:
void main()
{
Base* instance = new Derived("Jeff");
};
這顯然是行不通的。有沒有辦法給新的派生實例提供一個構造函數參數給它的基礎,而不必在派生類構造函數中提供該參數。
我希望有一種方法可以避免必須在派生構造函數中提供參數。這是唯一的方法嗎? –
@MarcusTomlinson:非常漂亮。很顯然,我提出了一些變體,但它們都涉及在其初始化列表中明確調用「Base」構造函數的Derived構造函數。但這是有道理的; 「派生」源自「基礎」的事實是施工時的實施細節;這個事實本質上是封裝的。 –
該死的......爲答案拍攝! –