首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

重载 = 运算符的有关问题

2012-02-25 
重载 运算符的问题我自己写了一个POINT类型,包含两个成员变量(XPoint,YPoint).想重载一个运算符,可以完

重载 = 运算符的问题
我自己写了一个POINT类型,包含两个成员变量   (XPoint,   YPoint).
想重载一个运算符,可以完成   Point   =   (0,   0);   这样的操作,但是不知道有两个参数的话这个运算符怎么声明了。


[解决办法]
Point = (0, 0);
这个比较难,因为这里的(0, 0)会被解释成一个逗号表达式,其值为0。
楼主的意图跟C++的语法细节有些冲突了。

实际上,你就是直接写:
Point p;
……;
p = Point(0, 0);
编译器也会把它优化成效率比较高的,放心好了。
[解决办法]
否则,如果你就是不放心,那还是定义一般函数吧,比如:
void Point::set(int x, int y) {
XPoint = x;
YPoint = y;
}

然后调用:
Point p;
……
p.set(0, 0);
[解决办法]
使用成员函数,
你所定义的 Point = (0, 0);
和标准中的内容 存在歧义 ~
[解决办法]
楼上说的在理啊。
[解决办法]
#include <iostream>
using namespace std;

class Pair
{
public:
Pair(const int& l, const int& r)
{
}
int a1;
int a2;
};
class A
{
public:

A& operator = (const Pair& a)
{
this-> a = a.a1;
this-> b = a.a2;
return *this;
}
private:
int a;
int b;
};


int main()
{
A a;
a = Pair(10, 20);
}

[解决办法]
楼上说的好像没有明白LZ的意思吧
另外说一句楼上的这句
Pair(const int& l, const int& r)好像没有必要用引用吧。

热点排行