終於在高人的指點下明白了為什麼要有虛類這麼東西。
我的理解是,方便了擴展性。c++的巨大優勢也是面向對象,比c從頭到尾的形式擴展性上很多。比如說,對於一個求解的問題,我有兩種方法A 和 B,和兩種取已知值的方法為a 和b。
可能調用 A(a) 也可能是 B(a)。 這時,可以用c++的橋模式:而以後有更多 算法 C 和D後 只需要增加類C和D ,再改調用函數manner就可以了。class A:base
{
qiujie();
private:
auto_ptr<model> ptr;
}
class B:base
{
B()
qiujie(){
ptr ->yizhi();
}
auto_ptr<model> ptr;
}
class a:model
{
yizhi();
}
class b:model
{
yizhi();
}
class manger
{
public:
manger(int a)
{
if(a == 1)
ptr.reset(new A());
else
ptr.reset(new B());
}
void run(){return ptr->qiujie();}
private:
auto_ptr<base> ptr; //智能指針。就是動態分配對象以及當對象不再需要時自動執行清理。http://www.chinaitpower.com/A/2003-06-17/47697.html auto_ptr 需要頭文件 #include<memory>
};int main(int argc, char *argv[])
{
manger m(1);
m.run();
system("PAUSE");
return EXIT_SUCCESS;
}
2、auto_ptr不能指向數組
3、auto_ptr不能作為容器的成員。
4、不能通過賦值操作來初始化auto_ptr