C++运算符重载的规则

运算符重载的规则如下:

1、C++中的运算符除了少数几个之外,全部可以重载,而且只能重载C++中已经有的运算符。

2、重载之后运算符的优先级和结合性都不会改变

3、运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造,一般来讲,重载的功能应当与原有功能相类似,不能改变原运算符的操作对象个数,同时至少要有一个操作对象是自定义类型。

注意:不能重载的运算符只有5个,它们是类属关系运算符“.”、成员指针运算符“.*”、作用域分辨符“::”、sizeof运算符和三木运算符“?:”。前面两个运算符保证了C++中访问成员功能的含义不被改变。作用域分辨符和sizeof运算符的操作数是类型。

4、  运算符的重载形式有两种,重载为类的成员函数和重载为类的友元函数。

  • 运算符重载为类的成员函数的一般语法形式为:

函数类型  operator 运算符(形参表)

{

函数体

}

  • 运算符重载为类的友元函数,可以在类中声明友元函数的原型,在类外实现,也可以在类体中实现
时间: 2024-12-13 17:01:07

C++运算符重载的规则的相关文章

第十章 运算符重载

第十章 运算符重载 1.运算符重载的方法 (实质:函数重载) *一般格式: 函数类型名operator 运算符名称(参数表){函数体:} 2.运算符重载的规则 *不允许定义新的运算符 *允许重载的运算符 双目运算符 +(加法)  - (减法)  * (乘法) / (除法)   %(取模) 关系运算符 ==(等于) != (不等)  <   >   <=   >= 逻辑运算符 ||(或)   && (与)  !(非) 单目运算符 + (正)  -(负)   *(指针)

C++笔记(3):运算符重载

运算符重载 1.运算符重载基础 2.运算符重载的规则 3.重载双目运算符 4.重载单目运算符 5.重载流插入和提取运算符 6.类型转换 7.定义自己的string类 ------------------------------------------------------------------------------------------------------------------------------- 1.运算符重载基础 运算符重载就是对已有的运算符赋予新的含义,实现新的功能.前

嵌入式linux C++语言(六)——运算符重载

嵌入式linux C++语言(六)--运算符重载 运算符重载的本质是函数重载. 一.重载基础 1.运算符重载的语法 返值类型 operator 运算符名称(形参表列){    重载实体;} 2.友元重载 可以将运算符重载函数声明位友元函数 #include <iostream> using namespace std; class Complex { public:     Complex(float x=0, float y=0)         :_x(x),_y(y){}     voi

6、多态性-2、运算符重载

1.c++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型(如类),也需要有类似的运算操作.例如,下面的程序段定义了一个复数类: class complex { public: complex(double r=0.0,double i=0.0){real=r;imag=i;} void display(); private: double real; double imag; }; 于是我们可以这样声明复数类的对象:complex a(10,20),b(5,8);

Part8 多态性 8.1运算符重载

1运算符重载的规则C++ 几乎可以重载全部的运算符,而且只能够重载C++中已经有的.不能重载的运算符:".".".*"."::"."?:"重载之后运算符的优先级和结合性都不会改变. 重载的两种形式: 1 重载为类的非静态成员函数: 2 重载为非成员函数. 2双目运算符重载为成员函数 函数类型 operator 运算符(形参) { ...... } 参数个数=原操作数个数-1 (后置++.--除外) 双目运算符重载规则: 如果要

C++ 运算符重载

C++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作.比如对象a和对象b, 那么 a+b 就需要用户自己定义它怎么相加,这时就用到了运算符重载. 运算符重载规则如下: ①. C++中的运算符除了少数几个之外,全部可以重载,而且只能重载C++中已有的运算符. ②. 重载之后运算符的优先级和结合性都不会改变. ③. 运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造.一般来说,重载的功能应当与原有功能相类似,不能改变原运算符的操作对

关于c++的运算符重载那些事

搞c++有一段时间了,今天突然要重载一个运算符,发现自己有点忘了,遂查查资料做一下c++运算符重载的小总结. 一.何为运算符重载 运算符的重载是c++语言特有的,java什么的是没有运算符重载的,所以运算符重载在笔试面试中有可能成为c++的高频考点.运算符重载就是重新定义运算符的意义,如常用的+,-,×,÷都是可以重载的.运算符重载使用的是关键字operator,表现形式是:                                                            

【C++】运算符重载

这是C++的特色,也是C++比较难的一个基本语法,但是,如果你把运算符重载看成一个特殊的类方法,且这个类方法的名称就是运算符,一切就变得简单了. 下面用一个简单的程序说明这个问题: 声明两个3x3二维矩阵a,b,其实就是Matrix类,里面就用私有的长度为9的一维数组存储数据.只是打印的时候,打成二维数组的样子 实现~a或者~b就能直接打印a与b,也就是~相当于把a,b打印出来,此乃单目运算符重载. 实现a+b,返回另一个相加之后的矩阵c. 也就是说做到如下图的效果: 代码如下: #includ

运算符重载与sort()

运算符重载与sort() 二话不说上代码: 1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 struct type_1 5 { 6 int a,b; 7 type_1(int x=0,int y=0):a(x),b(y){} 8 }; 9 bool compare(type_1 a,type_1 b) 10 { 11 return a.a<b.a; 12 } 13 bool opera