我有一个表示矩阵的类和矩阵上的几个操作。我试图重载*
运算符以乘以两个矩阵。
matrix matrix::operator* (matrix param) {
if(n!=param.n){
matrix blah;
return blah;}
matrix temp(n,0);
temp.user_matrix=mult(param.user_matrix);
return temp;}
矩阵都是方形的,所以第一部分只是检查它们是否具有相同的大小。这是有效的,但是如何在将温度矩阵返回到另一个矩阵对象后删除它?
答案 0 :(得分:3)
你不应该。它会自动销毁。
您应该delete
只有new
分配的对象。
通常使用原始new
和delete
在现代C ++中不受欢迎。查看std::unique_ptr
和std::shared_ptr
的替代方案。 (在你的例子中不需要它们)
答案 1 :(得分:0)
"温度"是一个局部变量,作用于你的函数,没有必要释放它的内存。它使用的内存在堆栈中,因此它被释放了#34;由函数后缀自动生成(构成return语句的底层代码)。
void foo() {
int temp = 5;
return temp + temp;
}
;; x86 ASSEMBLY (NASM/FASM syntax)
foo:
SUB esp, 4 ;; <-- local memory for temp variable
MOV [esp], 5 ;; temp = 5
MOV eax, [esp] ;; eax = 5 (eax is the return-value register)
ADD eax, eax ;; 5 + 5
ADD esp, 4 ;; <-- "free" local memory for temp variable
RETN