|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 黑龍 于 2016-1-20 22:02 编辑
运算符重载是指对已有的运算符进行重新定义,不是用户自己重新定义运算符。在C++中 绝大部分的运算符都可以被重载。比如成员访问运算符,成员指针访问运算符,作用域运算符,长度运算符sizeof和条件运算符。
重载后不能改变运算符的操作对象(操作数)的个数。如:"+"是实现两个操作数的运算符,重载后仍为双目运算符。
确实挺复杂的,我看了半天才明白。。。。。
我也是知道了java为什么取消了运算符重载了
成员函数重载单目运算符 ++
运行后我这里输出的是<11,21>
@康小泡 @小甲鱼 @牡丹花下死做鬼 @无名侠 @Angel丶L @竹林小溪 @拈花小仙
- #include <iostream>
- using namespace std;
- class Empty
- {
- private:
- int a;
- int b;
- public:
- Empty(int a,int b)
- {
- this->a=a;
- this->b=b;
- }
- void operator++();
- void print();
- };
- void Empty::operator++()
- {
- ++a;
- ++b;
- return;
- }
- void Empty::print()
- {
- std::cout<<"<"<<a<<","<<b<<">"<<std::endl;
- return;
- }
- int main(void)
- {
- Empty p(10,20);
- ++p;
- p.print();
- return 0;
- }
复制代码
友元函数重载双目运算符 +
这里我的输出结果是50+
- #include <iostream>
- using namespace std;
- class Empty
- {
- private:
- double a;
- double b;
- public:
- Empty(double a=0,double b=0)
- {
- this->a=a;
- this->b=b;
- }
- friend Empty operator+(Empty e,Empty f);
- void print();
- };
- Empty operator+(Empty num,Empty number)
- {
- return Empty(num.a+number.a,num.b+number.b);
- }
- void Empty::print()
- {
- std::cout<<a;
- if(b>0)
- std::cout<<"+";
- else if(b!=0)
- std::cout<<"cpp"<<b<<std::endl;
- }
- int main(void)
- {
- Empty i(20,20);
- Empty j(30,-10);
- Empty sub;
- sub=i+j;
- sub.print();
- return 0;
- }
复制代码 |
评分
-
查看全部评分
|