在c++中重写+操作符时可视地分配内存
visual allocating memory when overriding + operator in c++
我正在创建一个自定义对象并覆盖+操作符。我将返回一个相同类型的新对象。在这个方法中分配内存是不好的做法吗?因为我需要在作用域之外删除内存。
是的,如果没有进一步的信息,这是不好的。
通常你这样做:
struct X
{
int m_i;
X(int i) : m_i(i) { }
X operator+(const X& another) const
{
return X(m_i + another.m_i); // note, not new X(...)
}
}
也就是说,如果确实需要动态分配的话,可以返回一个unique_ptr。
有一个很好的例子,重载operator+
返回对象的新实例作为结果,没有动态分配。
源代码在这里,有很多关于如何重载操作符的解释。
示例如下:
// Add this instance's value to other, and return a new instance
// with the result.
const MyClass MyClass::operator+(const MyClass &other) const {
return MyClass(*this) += other;
}
它假设你实现了operator+=
和一个复制构造函数,如果你没有+=
-只要把赋值操作直接放在那里。
相关文章:
- 可视化 如何在 c++ 中制作特定大小的文件?
- 可视化C++:发布模式的运行时库作为'Multi-threaded Debug DLL'
- 提升如何在图形可视化中写入边缘的权重?
- 如何在大型c++项目的可视化代码中设置调试
- 可视化编译与 C++ 中的 Extern 变量
- 可视化 Bazel C++预编译标头实现
- 无法为 X.radio 创建中等可视化,因为找不到网络节点可视化 - Omnet++
- C++合并排序可视化工具
- 可视化 使用 VS Code 查找C++应用程序中的内存泄漏
- 可视化 将字符串解析为数组以进行C++
- 可视化 如何在C++中将字符数组转换为 FILE 类型
- 可视化C++载体:未使用的容量
- 可视化 如何在 c++ 中截断
- 如何使用可视化代码和平台IO将环境变量注入CPP文件?
- 使用快速排序对 C++ 中的可视化工具错误进行排序
- 可视抽象类 c++(错误 LNK 2001:未解析的外部符号)
- OpenCV 中大量可视化::Widget3D 的性能不佳
- 可视化C++将分配移动到未初始化的对象?
- C++中可变长度堆栈上的可视化数组分配
- 在c++中重写+操作符时可视地分配内存