c++ - 构造动态对象时取消引用

标签 c++ pointers reference

为什么不使用以下内容:

struct Foo
{
    int x;
};

int main()
{
    Foo &foo = *new Foo();
    foo.x = 7;
    std::cout << foo.x << std::endl;
    delete &foo;
}

毕竟,必须尽可能使用引用,并且使用这种方法,一旦我们最初取消引用,我们就永远不必担心再次忘记它。缺点是什么?

编辑:

我知道 operator ->,忘记了我的意思

int &n = *new int;
n = 7;
int *m = new int;
*m = 7; //here you can forget it

最佳答案

你会发生内存泄漏。你必须在函数结束时做这样的事情:

delete &foo;

这是个坏主意。

关于c++ - 构造动态对象时取消引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16492607/

相关文章:

c++ - (Visual C++) 从线程获取 PID

c++ - 为什么我不能制作引用 vector ?

c++ - C++ win32 中的 WM_COMMAND 捕捉按钮按下

c++ - 为什么有些图书馆提供无指针访问而其他图书馆不提供?

c - 我试图使用 free() 释放结构中元素占用的内存,但它不起作用

c++ - 如何将 shared_ptr 与指向不应释放的结构的指针一起使用

php - 使用引用创建变量是个好主意吗?

c++ - 跟踪 C++ 中不可重现的错误

c++ - 将指针转换为 (const) 引用

c++ - 在类成员函数中获取引用并将其分配给 C++ 中的类数据成员(引用)