重载操作符为成员函数和全局函数对于做操作数的限制(转)

原文:https://blog.csdn.net/ninghu800/article/details/17000787?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class number
{
    int i;
public:
    number(int I = 0)
    {
        i = I;
    }
    const number operator+(const number& n) const
    {
        return number(i + n.i);
    }
    friend const number operator-(const number&, const number&);
};
  
const number operator-(const number& n1, const number& n2)
{
    return number(n1.i - n2.i);
}
  
int main()
{
    number a(22), b(11);
    a + b;  //ok,调用成员操作符+
    a + 1; //ok,编译器首先调用number的构造函数将1转换为number,然后调用成员操作符+
    1 + a; //error,因为它所拥有的是number::operator+,需要左操作数是number对象,因此编译器发出一个出错信息
    a - 1; //ok,编译器会先将1转换为number,然后调用全局的重载操作符-
    1 - a; //ok,同上,可见全局重载操作符的方式,它不限定number作为左操作符
    1 - 1; //编译器不会将1转换为number,它会优先使用内部运算符
  
}

  

 

posted on   lh03061238  阅读(210)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示