抽象类参考

Alg*_*Man 1 c++ virtual-functions

我可以上课吗?

教室{〜室(); virtual cost()= 0; }

Class Hotel {地图房;/**/};

我的酒店会变得抽象吗?它可以保存从Room派生的具体Room对象列表吗?

小智 5

您编写的代码不是有效的C++.如果你的意思是:

class Room{ 
   ~Room();
   virtual int cost() =0; 
};
Run Code Online (Sandbox Code Playgroud)

然后是的,这个课是抽象的.你不能再像这样创建一个地图:

map <int, Room> rooms;
Run Code Online (Sandbox Code Playgroud)

但你可以这样:

map <int, Room *> rooms;
Run Code Online (Sandbox Code Playgroud)

假设您有一个派生自Room的类SingleRoom并实现cost(),您可以说:

rooms.insert( make_pair( 101, new SingleRoom ) );
Run Code Online (Sandbox Code Playgroud)

另请注意,抽象类必须具有虚拟析构函数.