下面的代碼,打印出C++多態性與切片
Derived
Base
Base
但我需要投入每一個用戶派生對象::項,調用它自己的打印功能,而不是基類之一。我可以實現,而不使用指針?如果不可能,我應該如何編寫一個接一個地刪除User :: items的函數並釋放內存,以避免內存泄漏?
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Base{
public:
virtual void print(){ cout << "Base" << endl;}
};
class Derived: public Base{
public:
void print(){ cout << "Derived" << endl;}
};
class User{
public:
vector<Base> items;
void add_item(Base& item){
item.print();
items.push_back(item);
items.back().print();
}
};
void fill_items(User& u){
Derived d;
u.add_item(d);
}
int main(){
User u;
fill_items(u);
u.items[0].print();
}
使用智能指針來避免內存泄漏 – 2010-04-04 17:44:28