小编Dom*_* P.的帖子

"new Foo()"和"&Foo()"之间的区别作为参数

关于关键字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()它创建的对象的生命(至少)直到毁灭 …

c++ reference parameter-passing new-operator

16
推荐指数
1
解决办法
890
查看次数

标签 统计

c++ ×1

new-operator ×1

parameter-passing ×1

reference ×1