我明白什麼是虛函數和純虛函數,但是C++中虛函數的用途是什麼。我可以爲這個可以使用虛函數的概念獲得更好的例子嗎?C++中虛擬類和抽象類的用法
此給出的例子是 1.Shape一個基類 2.Rectangle和方是派生類
我的問題是什麼是需要的形狀排在首位派生類? 爲什麼不能直接直接使用矩形和方形類
我明白什麼是虛函數和純虛函數,但是C++中虛函數的用途是什麼。我可以爲這個可以使用虛函數的概念獲得更好的例子嗎?C++中虛擬類和抽象類的用法
此給出的例子是 1.Shape一個基類 2.Rectangle和方是派生類
我的問題是什麼是需要的形狀排在首位派生類? 爲什麼不能直接直接使用矩形和方形類
可以使用虛擬函數來實現運行時多態性。
我們可以使用純虛函數來製作接口。 –
如果您想要爲您的派生類重寫某個特定行爲(讀取方法)而不是爲基類實現的特定行爲(讀取方法),並且想要這樣做,則可以使用虛擬函數在運行時通過指向基類的指針。
實施例:
#include <iostream>
using namespace std;
class Base {
public:
virtual void NameOf(); // Virtual function.
void InvokingClass(); // Nonvirtual function.
};
// Implement the two functions.
void Base::NameOf() {
cout << "Base::NameOf\n";
}
void Base::InvokingClass() {
cout << "Invoked by Base\n";
}
class Derived : public Base {
public:
void NameOf(); // Virtual function.
void InvokingClass(); // Nonvirtual function.
};
// Implement the two functions.
void Derived::NameOf() {
cout << "Derived::NameOf\n";
}
void Derived::InvokingClass() {
cout << "Invoked by Derived\n";
}
int main() {
// Declare an object of type Derived.
Derived aDerived;
// Declare two pointers, one of type Derived * and the other
// of type Base *, and initialize them to point to aDerived.
Derived *pDerived = &aDerived;
Base *pBase = &aDerived;
// Call the functions.
pBase->NameOf(); // Call virtual function.
pBase->InvokingClass(); // Call nonvirtual function.
pDerived->NameOf(); // Call virtual function.
pDerived->InvokingClass(); // Call nonvirtual function.
}
輸出將是:
Derived::NameOf
Invoked by Base
Derived::NameOf
Invoked by Derived
這可能有助於http://stackoverflow.com/questions/2391679/can-someone-explain-c-virtual-methods?rq=1 –
請不要濫用標準術語。 「實時」在IT中具有非常具體的含義,那不是。你的意思是「真實世界」。您需要查看「多態性」,這是OOP的支柱之一。 – EJP
從網絡解析一組不同的應用程序消息? –