c++ 重载问题 #include <iostream> using namespace std; class Point{ int x,y; public: void set(int a,

2025-01-18 17:15:41
推荐回答(5个)
回答1:

“operator+(a,b).print();”多此一举!
Point operator+(const Point& a,const Point& b);这句话就是重载“+”,也就是“(a+b).print();”的“+”被重载到了那个函数里实现了。所以“operator+(a,b).print();”是画蛇添足!注释掉就可以了!
因为Point operator+(const Point& a,const Point& b);的意思是说”+“被重载了。你只能a+b 这种方式去调用,而不能使用operator+这种方式去调用,operator是关键字。难道你定义一个变量int a;
你会int a+b这样去调用吗?

回答2:

有区别,成员方法a如果用const修饰,则该方法不能修改调用它的对象,简单地说它不能修改该类的成员变量。如果没有const限定,则没有该限制。

回答3:

楼主需要说明一下你的调试环境啊 ,vs2005下没有问题,2楼的说的可能有点过激,楼主估计是想知道这种调用的合法性,operator+(a,b).print();在vs2005下调用是合法。编译完全没问题。

回答4:

楼主用的是VC6.0吧,这个是Microsoft的问题,换成更高版本即可

回答5:

是对的啊,没有错呀!