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;
}