c++ 可重载运算符和不可重载运算符

         我们知道重载的定义为,在一个类中公用同一个方法名,但是参数类型或者参数个数不同。如果仅仅有方法返回值类型不同,不能构成函数的重载。

        上面仅仅说了函数的重载,还有一些操作符重载呢?

        还是先列出c++有哪些操作符吧!

        操作符可分为9个大类,分别为:

        1.赋值运算符:‘=’,注意这里不是等于的意思,只是单纯的赋值

        2.算术运算符:单目操作符’+‘、’-‘(一元正、负号),+,-,*,/,%,(加、减、乘、除、取余)

        3.逻辑运算符:&&,||,!

        4.关系运算符:>,<,=,>=,<=,==,!=

        5.位操作符:~(求反),<<(左移),>>(右移),&(位与),^(位异或),|(位或)

        6.自增自减运算符:++,--(注意此类运算符可在前在后,但是运算符在前的话,是先自加1,然后再使用;而运算符在后的话,先使用然后再加1)

        7.复合赋值运算符:+=,-=,*=,/=,%=(模运算赋值),<<=(左移赋值),>>=(右移赋值),&=(位逻辑与赋值),|=(位逻辑或赋值),^=(位逻辑异或赋值),

        8.条件运算符:?:(条件运算符作为C/C++中唯一的三元运算符

        9.逗号运算符:,(逗号表达式是一组由逗号分隔的表达式,这些表达式从左到右计算。并且逗号表达式的结果是其最右表达式的值,例如表达式“a= (b=2,c=7,d=5);",那么a的值为5,而表达式“a=b=2,c=7,d=5;",此时a的值为2,因为赋值运算符的优先级比逗号运算高)

        常见的一些的操作符:

       1.取地址操作符:&

       2.解引用操作符:*

       3.调用操作符:( () ),调用操作符是一对圆括号,括住传递给函数的实参列表

       4.箭头操作符:->(C++为包含点操作符和解引用操作符的表达式提供的一个同义词)

       5.作用域操作符:::(全局作用域、类作用域、名字空间作用域)

       6.点操作符:.  (点操作符的右操作数不是对象或值,而是成员的名字)

       7.下标操作符:[]

       8.new/delete([])操作符:

       9.指向成员操作的指针操作符:->*,.*

       10.输入和输出操作符:>>、<<

        前面说了这么多操作符、运算符,下面正式开始切入正题,到底哪些是可以重载的呢?

        根据《C++ primer》第四版中第十四章”重载运算符与转换“的目录可知,可重载的操作符有:

        输入和输出操作符;

        算术操作符;

        关系操作符;

        赋值操作符和符合赋值操作符;

        下标操作符;

         成员访问操作符;引用操作符(*)和箭头操作符(->)

        自增操作符和自减操作符;

        调用操作符和函数对象

       其实除了上面说的,还有很多可重载:

       逻辑操作符

       位操作符

       new/delete操作符

        而不可操作的操作符比较少,可直接列出来:

       作用域操作符:::

        条件操作符:?:

        点操作符:.

         指向成员操作的指针操作符:->*.*

        预处理符号:#



你可能感兴趣的:(C++,c)