C++除可重载函数之后,还允许定义已有的运算符,这样通过运算符重载可像处理数据使用它们。
先来个代码
1 #include2 using namespace std; 3 4 class num 5 { 6 public: 7 num(){n=1;} 8 ~num(){} 9 int get() const{ return n;}10 void set(int x){n=x;}11 private:12 int n;13 };14 15 int main()16 {17 num i;18 cout< <
编译将提示一个错误:
--------------------Configuration: demo1 - Win32 Debug--------------------
Compiling...demo.cppE:\CCDEMO\demo1\demo.cpp(19) : error C2676: binary '++' : 'class num' does not define this operator or a conversion to a type acceptable to the predefined operator 此处提示没有该类没有重载++这个运算符;执行 cl.exe 时出错.
demo1.exe - 1 error(s), 0 warning(s)
将代码处:i++ 注释,编译即成功;如何解决以上问题,我们可以使用一函数解决,看以下代码:
#includeusing namespace std;class num{public: num(){n=1;} ~num(){} int get() const{return n;} void set(int x){n=x;} void add(){++n;}private: int n;};int main(){ num i; cout< <
以上能解决问题,但还没有现实我们所说的C++重载运算符;以下使用运算符重载:
1 #include2 using namespace std; 3 4 class num 5 { 6 public: 7 num(){n=1;} 8 ~num(){} 9 int get() const{ return n;}10 void set(int x){n=x;}11 void add(){++n;}12 void operator++(){++n;} //此处使用了重载运算符13 private:14 int n;15 };16 17 int main()18 {19 num i;20 cout< <
好了。编译一下,没有问题。这就是最简单的运算符重载。