Abstract class其實就像是一個interface , 通常是用來做為其他class的base class ,
在C++中 , Abstract class至少要包含一個pure virtual function .
class AB { public: virtual void f() = 0; };
因為Abstract class是存在著一些pure virtual function ,
且這些pure virtual function在abstract class裡面是沒有define內容的.
所以我們可以很直覺的想到 , 這樣的abstract class是沒有辦法instantize.
也就是說 , 我們不能將他做為parameter type , function return type , or the type of an explicit conversion.
對於abstract class , 我們只能使用pointer or reference , 因為這兩個並不會產生一個object.
struct A { virtual void f() = 0; }; struct B : A { virtual void f() { } }; // Error: // Class A is an abstract class // A g(); // Error: // Class A is an abstract class // void h(A); A& i(A&); int main() { // Error: // Class A is an abstract class // A a; A* pa; B b; // Error: // Class A is an abstract class // static_cast<A>(b); }
全站熱搜