当我们没有将 Operator+ 定义为朋友时?C++

问数学

我在一些资料中读到,如果我们operator+通过operator=+所以我们没有定义operator+为“朋友”。

有人可以解释一下吗?

卡尔

一个想法是避免重复代码。看这个例子:

class A
{
    int a = 0;

public:
    A & operator+=(const A& other) { a += other.a; return *this; }
};

然后,您可以operator+通过operator+=保存重复代码并将其保留为免费功能来实现:

A operator+(const A& lhs, const A& rhs) { A tmp(lhs); tmp += rhs; return tmp; }

这意味着您现在有两个功能。如果你改变 的含义+=,它的含义+也会改变。更容易维护。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当我们尝试将变量除以零时,为什么编译器没有显示错误

当我们点击 iPhoneX 中的文本字段时,键盘没有打开

当我们获得bean时,SpringBoot WebMvcConfigurationSupport没有采用configureMessageConverters

当我们有多个安装时,将运行哪个二进制文件?

当我没有在我的函数中使用它时,为什么我们需要 func.TimerRequest?

当我们加载预训练模型而我们没有训练数据集时,如何缩放预测数据?

当我们有ViewModels时,我们还需要onSaveInstanceState()吗?

当我们在C ++中没有合适的左值时,应该以int&返回什么?

当我们有多个查询时的 Kafka Connect

在C ++中,为什么我们可以重载`operator->`而不能重载`operator。

当我们将鼠标悬停在悬停的元素上时,HTML所有元素都会移动?

当我们将 readonly 设置为 true 时如何自动更改 TcustomEdit 的字体颜色

当我们有这么多结构时,如何定义多个调度?

当我们在类中定义委托时,有什么区别呢?

当我们有一个红色区域时,为什么我们需要堆栈分配?

当我们将指针打印到字符类型时,为什么C ++显示字符?

为什么即使我在页面中没有执行任何操作,但当我们使用“ --enable-precise-memory-info”打开Chrome时,usedJSHeapSize总是增加?

当我们有重复的元素和自定义过滤条件时,在Java 8中将List <MyObject>转换为Map <String,List <String >>

当我们有函数和 lambdas 时,C++ 中的“块”是什么?

当我们有上下文值时, <ratio> 有什么用?

当我们真正拥有move构造函数时,是否具有(N)RVO?

当我们调用函数时,如果没有像func这样的参数传递,是否需要参数括号();vs func();

当我们动态导入没有默认导出的javascript文件时,为什么打字稿会推断默认道具

当我们没有与之比较的值时,如何在HQL中执行OR给出此错误java.lang.NullPointerException?

当我没有变量或任何其他命名的变量时,为什么会出现错误“与 'operator==' 不匹配”?

当我们将 NSDate 转换为 NSDate 组件时,NSDateComponents 的值是错误的

当我们有 sqrt 时如何避免数学域错误

当我们有Class类型的对象时,如何在Java中创建实例

当我们只有一个片段时处理 `BackPressed`