41重载运算符的规则

简介: 41重载运算符的规则

C++入门——60s从0到1

重载运算符的规则

 

C++语言的运算符重载特性为开发者提供了很大的灵活性,但是也存在一些规则需要遵守。

 

运算符重载必须是成员函数

 

运算符重载必须作为类的成员函数进行定义。这意味着运算符重载必须被定义在类的定义中,而不能定义在全局作用域中。这是为了保证运算符重载的封装性和安全性而做出的规定。

 

重载运算符必须是单目或双目运算符

 

运算符重载可以是单目运算符(如 `+`、`-`、`*`、`/` 等)或双目运算符(如 `+=`、`-=`、`*=`、`/=` 等)。这是为了保持运算符重载的一致性和可读性而做出的规定。

 

必须通过函数重载实现运算符重载

 

运算符重载必须通过函数重载来实现。具体来说,开发者需要在类中定义一个新的函数来代替原有的运算符,并使用该函数来实现相应的功能。例如,要重载 `+` 运算符,开发者需要定义一个新的函数 `operator+()`,并在其中实现相应的功能。

 

返回类型和参数列表必须与运算符匹配

 

在进行运算符重载时,返回类型和参数列表必须与原有的运算符匹配。例如,如果要重载 `+` 运算符,那么该运算符的返回类型应该是与操作数类型相同的类型,并且参数列表应该有两个操作数。这是为了保持语言的一致性和可读性而做出的规定。

 

不能改变运算符的含义和优先级顺序

 

在进行运算符重载时不能改变原有的运算符的含义和优先级顺序。也就是说,如果原有的某个运算符需要两个操作数(如乘法),那么在重载这个运算符时也需要接受两个操作数;如果原有的某个运算符具有固定的优先级顺序(如加法和减法的优先级相同),那么在重载这个运算符时也应该保持这个顺序不变。这是为了保持语言的一致性和可读性而做出的规定。

 

运算符重载应该是可见的

 

在进行运算符重载时应该将新的函数定义为 `public` 成员函数或将其声明为友元函数。这是为了保证运算符重载的可见性和正确性而做出的规定。如果将新的函数定义为 `private` 成员函数,则在类的外部是无法调用该函数的;如果将其声明为友元函数,则可以访问类的私有成员变量和成员函数

 

总结

 

C++语言的运算符重载特性为开发者提供了很大的灵活性来定义自定义类型的行为方式,但是也存在一些规则需要遵守。开发者需要仔细考虑这些规则以避免出现不必要的问题和错误。同时,也需要遵循已有的编程约定和习惯用法以提高代码的可读性和可维护性。

 

目录
相关文章
|
6月前
|
算法 C++ 开发者
【C++运算符重载】深入理解C++中的流运算符 >>和<<重载
【C++运算符重载】深入理解C++中的流运算符 >>和<<重载
84 0
|
5月前
|
编译器 C++
C++对C的改进和拓展\域解析符、形参默认值、函数重载
C++对C的改进和拓展\域解析符、形参默认值、函数重载
24 0
|
6月前
|
C语言 C++
C++|运算符重载(2)|运算符重载的方法与规则
C++|运算符重载(2)|运算符重载的方法与规则
|
6月前
|
C++
C++ operator关键字的使用(重载运算符、仿函数、类型转换操作符)
C++ operator关键字的使用(重载运算符、仿函数、类型转换操作符)
83 0
|
存储 Swift
13 如何为类和结构体自定义运算符实现
如何为类和结构体自定义运算符实现
67 0
引用作为重载条件
引用作为重载条件
41 0
|
人工智能 编译器 程序员
C++11之decltype类型推导(使用场景、推导四规则、cv限定符)
C++11之decltype类型推导(使用场景、推导四规则、cv限定符)
276 0
|
编译器 C++
C++中构造函数调用规则
C++中构造函数调用规则
96 0
重载运算符操作说明(一)
重载运算符名字由关键字operator 和其后要定义的运算符号共同组成。 重载的运算符也包含返回类型,参数列表,以及函数体。 重载运算符函数的参数数量与该运算符作用的运算对象数量一样多。比如 一元运算符有一个参数,二元运算符有两个参数。
96 0
下一篇
无影云桌面