【发布时间】:2012-04-28 08:34:09
【问题描述】:
这是一个可用于+ 操作的类示例。
class A
{
public:
int *array;
A()
{
array = new int[10];
}
~A()
{
delete[] array;
}
A operator+ (const A &b)
{
A c;
for(int i=0; i<10; i++)
c.array[i] += array[i] + b.array[i];
return c;
}
};
int main()
{
A a,b,c,d;
/* puts some random numbers into the arrays of b,c and d */
a = b+c+d;
}
a 会在复制b+c+d 的结果之前运行析构函数吗?如果没有,如何确保没有内存泄漏?
+ 运算符重载是这样设计的,不会修改任何操作数。
【问题讨论】:
-
your previous question 接受的答案有什么问题?为什么你使用
new int[10]而不是std::vector? -
我假设这只是一个试图理解的示例,但如果这是真实代码,您可以只定义
int array[10];,然后不必担心正确删除。 -
@Johnsyweb 答案很好,但这只是我草拟的一个例子,我没有多想。这个例子并不代表我对其他答案的看法。
-
@Corbin 在我现在正在处理的代码中,构造函数接收一组整数,用于分配一定大小的数组。
-
啊。如果您已经在使用标准容器,那么 Johnsyweb 是对的;你应该只使用一个向量。
标签: c++ memory overloading memory-leaks operator-keyword