1
我很好奇如果在下面的程序中Base* base
在類Container
中可以用Base& base
代替嗎?
與Base base
它不能被替換,因爲Base
是抽象的。
隨着Base& base
對象應該分配到某個地方,所以我仍然不能擺脫指向分配對象的指針。引用代替抽象類的指針
#include <iostream>
class Base
{ public:
virtual void str()=0;
};
class A : public Base
{ int i;
public:
A(int i):i(i){}
void str(){std::cout<<i<<std::endl;}
};
class B : public Base
{ double f;
public:
B(double f):f(f){}
void str(){std::cout<<f<<std::endl;}
};
class Container
{ Base *base;
public:
Container(int i) { base=new A(i);}
Container(double f) { base=new B(f);}
void str(){ base->str();}
};
int main()
{
Container c1(8),c2(13.0);
c1.str();
c2.str();
return 0;
}
我認爲這篇文章應該給你一個答案: http://stackoverflow.com/questions/7192069/polymorphic-c-references – Tazadar