【发布时间】:2019-01-11 14:08:50
【问题描述】:
考虑这个简单的类:
class Test {
public:
Test() { data = 0; };
Test(int integer);
int getData() { return data; }
~Test();
private:
int data;
};
如果我写:
Test t = *new Test;
是否会在堆上创建一个新的Test 对象,然后将其复制到临时Test 对象t?还会有内存泄漏吗?
还有为什么这无效?
Test* t = new Test(0);
int i = *t.getData();
但这不是:
Test* t1 = new Test(0);
Test& t2 = *t1;
int i = t2.getData();
我知道我可以简单地做t->getData(),但我不明白为什么上面的例子不起作用?
【问题讨论】:
-
您可以使用 (*t).getData() 之类的东西,因为 *t.getData 将尝试在函数
getData返回时应用operator*