附加赋值重载(通过指针传递)
addition assignment overloading (passing by pointer)
基于此链接添加赋值重载使用堆栈和按值传递:
http://www - 01. - ibm.com/support/knowledgecenter/ssgh3r_8.0.0/com.ibm.xlcpp8a.doc/language/ref/cplr318.htm%23cplr318?lang=en
complx complx::operator+ (const complx& c) const
{
complx result;
result.real = (this->real + c.real);
result.imag = (this->imag + c.imag);
return result;
}
但是我想用这样的方式:
complx& complx::operator+ (const complx& c) const
{
complx result = new complx;
result->real = (this->real + c.real);
result->imag = (this->imag + c.imag);
return *result;
}
正确吗?我应该在哪里释放堆?有更好的办法吗?
自c++ 11以来,按值复制不再具有与之相关的旧污名。允许编译器省略副本。如果做不到这一点,它们就需要在可复制的情况下移动变量。一种非常常见的情况是当您返回一个自动函数变量时。在您的第一个示例中,result
至少移动了一次。它很可能会被撤销。因此,如果需要,为complx
实现一个move构造函数,并使用第一个签名。
没有合适的方法来释放方法中分配的内存,除非您自己手动重新分配。您可以使用smartpointer进行分配。当你用完后,它会释放内存。另一种释放它的方法是垃圾收集,这在c++中不存在。
相关文章:
- 错误:在为指针赋值时,void值没有被忽略
- 关于 c++ 函数中指针赋值的简单问题
- 链表指针赋值为什么我们不能直接将尾巴分配给 temp 而不是尾巴>尾巴下一个
- 为什么通过指针赋值常量没有效果?
- 复制构造函数中的指针赋值
- C++ 指针赋值运算符重载(不仅是对象赋值,还有指针赋值)
- 从字符串数组打印其中一个字符串时出现空指针赋值错误
- 为字符串指针赋值
- 动态指针赋值c++
- std::wstring指针赋值C++
- C++匿名结构指针赋值
- 为指针赋值而不赋值
- 此指针赋值应生成段错误
- 指向指针赋值的指针
- 哪个指针赋值更好(C++)
- <T>unique_ptr.get() 方法在使用原始指针赋值时调用析构函数?
- 为用soap_alloc创建的std::string指针赋值
- 为什么函数头的更改会导致指针赋值不起作用
- 64位c++指针赋值
- 在函数中将指针赋值到不同的地址