关于关键字new与&特定上下文之间的区别,我有一些问题.
让我们说这是我的代码:
struct Base {};
struct Foo : Base {};
struct Storage
{
void save(Base * object) {}
Base * content;
};
int main()
{
Storage s1, s2;
s1.save(new Foo());
s2.save(&Foo());
}
Run Code Online (Sandbox Code Playgroud)
执行main之后,s1将持有指向类型对象的指针Foo.然而,s2将保持指向类型对象的指针Base.在save方法完成执行之前,它s2.content只会指向一个类型的对象Foo.
如果我错了,请纠正我:
据我所知,new Foo()创建一个指向新类型对象的指针Foo.&Foo()另一方面,首先创建一个类型的新对象,Foo然后指向它.
究竟是什么区别new Foo()和&Foo()呢?显然,它们都会为您提供指向现有类型对象的指针Foo.
为什么new Foo()在执行save方法后通过persist 创建对象,而通过创建的对象&Foo()却没有?
可能是&Foo()创建一个临时对象,在执行save之后它将不复存在?如果是的话,我怎样才能延长通过&Foo()它创建的对象的生命(至少)直到毁灭 …