c 允许同一个作用域某个运算符指定多个定义,称为运算符重载,下面我们就来说一说关于c语言运算符详解图解?我们一起去了解并探讨一下这个问题吧!
![c语言运算符详解图解(运算符重载c基础语法十二)](http://img.studyofnet.com/upimg/643528364.jpg)
c语言运算符详解图解
c 允许同一个作用域某个运算符指定多个定义,称为运算符重载。
重载声明指的是一个与之前已经在该作用域中声明过的运算符或者说方法具有相同名称的声明,但是它们的实现不同。在调用重载运算符的时候,编译器通过比较,决定最合适的定义,这个选择的过程称为重载决策。
重载的运算符是带有特殊名称的函数,函数名是由关键字operator和要重载的运算符号构成。
例子:
使用运算符重载进行复数运算
#include <iostream>
class Complex
{
public:
Complex(int a, int b) {
this->a = a;
this->b = b;
}
Complex operator (Complex &another) {
Complex temp(this->a another.a, this->b another.b);
return temp;
}
private:
int a; //实数
int b; //虚数
};
int main(void) {
Complex c1(1, 2);
Complex c2(2, 4);
Complex c3 = c1 c2; //c1.operator (c2)
return 0;
}
1.c 不允许用户自己定义新的运算符,只能对已有的c 运算符进行重载。
2.重载不能改变运算符运算对象的个数。
3.重载不能改变运算符的优先级别。
4.重载不能改变运算符的结合性。
5.运算符重载不能有默认参数。
可重载的运算符and不可重载的运算符可重载的运算符:
双目算术运算符 |
(加),-(减),*(乘),/(除),% (取模) |
关系运算符 |
==(等于),!= (不等于),< (小于),> (大于),<=(小于等于),>=(大于等于) |
逻辑运算符 |
||(逻辑或),&&(逻辑与),!(逻辑非) |
单目运算符 |
(正),-(负),*(指针),&(取地址) |
自增自减运算符 |
(自增),--(自减) |
位运算符 |
| (按位或),& (按位与),~(按位取反),^(按位异或),,<< (左移),>>(右移) |
赋值运算符 |
=, =, -=, *=, /= , % = , &=, |=, ^=, <<=, >>= |
空间申请与释放 |
new, delete, new[ ] , delete[] |
其他运算符 |
()(函数调用),->(成员访问),,(逗号),[](下标) |
不可重载的运算符:
- .:成员访问运算符
- .*, ->*:成员指针访问运算符
- :::域运算符
- sizeof:长度运算符
- ?::条件运算符
- #: 预处理符号
申明:本文章记录学习笔记,分享给大家一起学习,有不正确的地方欢迎大家指出。如有侵权,马上删除。
,