【发布时间】:2019-02-05 14:49:08
【问题描述】:
关于this question,我看到所有答案都是使用指向基类的指针(Base *baseObject),然后使用new 关键字来实例化基类的不同实现。
假设有这样的Base 类:
class Base
{
public:
int Id;
}
和其他类似的类:
class A : public Base {...}
class B : public Base {...}
是否有条件地实例化基类对象但不使用指针,如下所示:
Base a;
if (...) a = new A();
else if (...) a = new B()
编辑:
基于 cmets 没有强制使用 new 关键字。
【问题讨论】:
-
使用
new仅对指针有意义,它要求内存来存储类,并且指针将指向该内存。在您的最后一段代码中,Base a;已经通过这样声明而占用了本地内存,因为a不是指针 -
没有强制使用
new关键字
标签: c++