当前位置:编程学习 > C/C++ >>

第14章 重载操作符与转换(3)

14.3 算术操作符和关系操作符
一般而言,将算术和关系操作符定义为非成员函数。
为了与内置操作符保持一致,加法返回一个右值,而不是一个引用。

friend Class1 operator+(const Class1 &c1, const Class1 &c2); 

Class1 operator+(const Class1 &c1, const Class1 &c2) 

    Class1 c(100); 
    c.counter = c1.counter+c2.counter; 
    return c; 


Class1 c1(200); 
Class1 c2(300); 
cout << c1 + c2  << endl; 
既定义了算术操作符又定义了相关复合赋值操作符的类,一般应使用复合赋值实现算术操作符。
14.3.1 相等操作符

friend bool operator==(const Class1 &c1, const Class1 &c2); 

inline bool operator==(const Class1 &c1, const Class1 &c2) 

    return c1.counter == c2.counter; 


Class1 c1(200); 
Class1 c2(300); 
bool i = c1 == c2; 
cout << i  << endl; 
定义了operator==的类更容易与标准库一起使用。有些算法,如find,默认使用==操作符,如果类定义了==,则这些算法可以无需任何特殊处理而用于该类类型。
14.3.2 关系操作符
关联容器以及某些算法,使用默认<操作符。一般而言,关系操作符,诸如相等操作符,应定义为非成员函数。

摘自 xufei96的专栏

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,