马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
}
|