所以我很明白它是如何工作的,但我無法掌握它的用途。你仍然需要定義所有單獨的函數,你仍然需要創建每個對象的實例,爲什麼不直接從該對象調用函數來創建對象,創建一個指向父對象的指針並傳遞派生對象引用,只是爲了調用一個函數?我不明白採取這一額外步驟的好處。有人可以解釋多態性的好處嗎?
爲什麼這樣做:
class Parent
{
virtual void function(){};
};
class Derived : public Parent
{
void function()
{
cout << "derived";
}
};
int main()
{
Derived foo;
Parent* bar = &foo;
bar->function();
return -3234324;
}
VS此:
class Parent
{
virtual void function(){};
};
class Derived : public Parent
{
void function()
{
cout << "derived";
}
};
int main()
{
Derived foo;
foo.function();
return -3234324;
}
他們這樣做完全一樣的正確的事情?據我所知,只有一個人使用更多的記憶和更多的困惑。
我明白了..有無論如何,你可以給我一個如何使它有用的例子嗎? – Jcrack 2012-02-05 07:05:25
爲什麼感謝你,善良的先生。 – Jcrack 2012-02-05 07:07:48
啊,但當然!我想我現在明白了。我會尋找實現多態的方法來進一步理解。感謝您花時間分享您的知識。 – Jcrack 2012-02-05 07:18:59