41重载运算符的规则

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

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

重载运算符的规则

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

运算符重载应该是可见的

 

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

 

总结

 

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

 

目录
相关文章
|
8月前
|
安全 编译器 C++
【C/C++ 类型转换规则】一文了解C/C++ 中的类型转换规则,帮助你更好的编程
【C/C++ 类型转换规则】一文了解C/C++ 中的类型转换规则,帮助你更好的编程
130 0
|
7月前
|
编译器
模板初阶(2):函数模板的匹配原则,类模板的实例化
模板初阶(2):函数模板的匹配原则,类模板的实例化
|
8月前
|
C语言 C++
C++|运算符重载(2)|运算符重载的方法与规则
C++|运算符重载(2)|运算符重载的方法与规则
|
8月前
|
IDE 开发工具 C++
C++变量命名规则
C++变量命名规则
109 0
|
8月前
|
程序员 编译器 C#
C#变量命名规则
C#变量命名规则
92 0
|
安全 编译器 C语言
代码规范:常量规则定义
使用枚举:来初始化类中的恒定常量 - 一般可用来在类中记录函数的返回值类型之类的内容。
95 0
|
存储 编译器 C++
【C++】C++11右值引用|新增默认成员函数|可变参数模版|lambda表达式(上)
【C++】C++11右值引用|新增默认成员函数|可变参数模版|lambda表达式(上)
|
存储 Swift
13 如何为类和结构体自定义运算符实现
如何为类和结构体自定义运算符实现
73 0
|
人工智能 编译器 程序员
C++11之decltype类型推导(使用场景、推导四规则、cv限定符)
C++11之decltype类型推导(使用场景、推导四规则、cv限定符)
322 0
|
编译器 C++
C++中构造函数调用规则
C++中构造函数调用规则
120 0

热门文章

最新文章