#include
#include
#include
#include
using namespace std;
class Door {
public:
void open() const {
cout << "open door horizontally" << endl;
}
void close() const {
cout << "close door horizontally" << endl;
}
virtual ~Door()
{
cout << " Door is delete " <<endl;
}
};
class DoorController {
protected:
vector _doorVec;
public:
void addDoor(Door aDoor) {
_doorVec.push_back(aDoor);
}
void openDoor() const {
for_each(_doorVec.begin(), _doorVec.end(), mem_fun_ref(&Door::open));
cout << "openDoor is end" <<endl;
}
virtual ~DoorController()
{
cout << "DoorController is delelte" <<endl;
}
};
int main()
{
DoorController dc;
Door doorc;
dc.addDoor(doorc);
dc.addDoor(doorc);
// dc.addDoor(Door());
// dc.addDoor(Door());
dc.openDoor();
}
运行结果:
上面是基类BaseControl的析构函数,写成virtual 防止使用多态的时候,delete 时未执行 该函数
在程序退出的时候
inline static ......<br/><strong>答案就在这里:</strong><a target='_blank' rel='nofollow' href='http://blog.csdn.net/xugangjava/article/details/8477777'>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。