C++运算符重载时要遵循的准则
发布时间:2022-07-01 12:49 所属栏目:[语言] 来源:互联网
导读:运算符重载是通过函数重载实现的,概念上大家都很容易理解,这节我们来说一下运算符重载的注意事项。 1) 并不是所有的运算符都可以重载。能够重载的运算符包括: + - * / % ^ | ~ ! = += -= *= /= %= ^= = |= = = == != = = || ++ -- , -* - () [] new new[]
运算符重载是通过函数重载实现的,概念上大家都很容易理解,这节我们来说一下运算符重载的注意事项。 1) 并不是所有的运算符都可以重载。能够重载的运算符包括: + - * / % ^ & | ~ ! = < > += -= *= /= %= ^= &= |= << >> <<= >>= == != <= >= && || ++ -- , ->* -> () [] new new[] delete delete[] 上述运算符中,[]是下标运算符,()是函数调用运算符。自增自减运算符的前置和后置形式都可以重载。长度运算符sizeof、条件运算符: ?、成员选择符.和域解析运算符::不能被重载。 2) 重载不能改变运算符的优先级和结合性。假设上一节的 complex 类中重载了+号和*号,并且 c1、c2、c3、c4 都是 complex 类的对象,那么下面的语句: c4 = c1 + c2 * c3; 等价于: c4 = c1 + ( c2 * c3 ); 乘法的优先级仍然高于加法,并且它们仍然是二元运算符。 3) 重载不会改变运算符的用法,原有有几个操作数、操作数在左边还是在右边,这些都不会改变。例如~号右边只有一个操作数,+号总是出现在两个操作数之间,重载后也必须如此。 4) 运算符重载函数不能有默认的参数,否则就改变了运算符操作数的个数,这显然是错误的。 上节的最后一个例子中,我们在全局范围内重载了+号,并在 complex 类中将运算符重载函数声明为友元函数,因为该函数使用到了 complex 类的 m_real 和 m_imag 两个成员变量,它们都是 private 属性的,默认不能在类的外部访问。 ![]() (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
在学习框架之前,首先来了解一下 Spring MVC 框架的整...[详细]
在学习框架之前,首先来了解一下 Spring MVC 框架的整...[详细]
Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的...[详细]
Servlet 是 Server Applet 的简称,译作服务器端小程...[详细]
目前 Nexus 分为 Nexus 2.x 和 Nexus 3.x 两个大版本...[详细]
在现实生活中社会分工越来越细,越来越专业化。各种产...[详细]
前两节我们详细介绍了面向对象设计原则中的开闭原则和...[详细]
设计模式有两种分类方法,即根据模式的目的来分和根据...[详细]
打开 UE4 启动器,选择 4.21.2 版本的虚幻引擎,点击...[详细]
使用 UE4 开发游戏之前,必须先搭建开发环境,具体包...[详细]