C++重载
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。
重载分为函数重载和运算符重载
函数重载
在同一个作用域内,可以声明函数名相同,参数不同的函数。但是不能通过返回值的不同来重载函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #include <iostream> using namespace std;
class printData { public: void print(int i) { cout << "整数为: " << i << endl; }
void print(double f) { cout << "浮点数为: " << f << endl; }
void print(char c[]) { cout << "字符串为: " << c << endl; } };
int main(void) { printData pd;
pd.print(5); pd.print(500.263); char c[] = "Hello C++"; pd.print(c);
return 0; }
|
运算符重载
重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| #include <iostream> using namespace std;
class Box { public:
double getVolume(void) { return length * breadth * height; } void setLength( double len ) { length = len; }
void setBreadth( double bre ) { breadth = bre; }
void setHeight( double hei ) { height = hei; } Box operator+(const Box& b) { Box box; box.length = this->length + b.length; box.breadth = this->breadth + b.breadth; box.height = this->height + b.height; return box; } private: double length; double breadth; double height; };
int main( ) { Box Box1; Box Box2; Box Box3; double volume = 0.0;
Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0);
Box2.setLength(12.0); Box2.setBreadth(13.0); Box2.setHeight(10.0);
volume = Box1.getVolume(); cout << "Volume of Box1 : " << volume <<endl;
volume = Box2.getVolume(); cout << "Volume of Box2 : " << volume <<endl;
Box3 = Box1 + Box2;
volume = Box3.getVolume(); cout << "Volume of Box3 : " << volume <<endl;
return 0; }
|
下面是不可重载的运算符列表:
- .:成员访问运算符
- .*, ->*:成员指针访问运算符
- :::域运算符
- sizeof:长度运算符
- ?::条件运算符
- #: 预处理符号
代码转自菜鸟教程