关于C++重载下标运算符

正在自学C++,用的是《C++入门经典》第三版,此书关于类的部分讲的异常混乱,说了一大堆结果没弄清楚作者想要告诉我什么,我也不想慢慢看他的示例了,会的人请举一个简单的示例... 正在自学C++,用的是《C++入门经典》第三版,此书关于类的部分讲的异常混乱,说了一大堆结果没弄清楚作者想要告诉我什么,我也不想慢慢看他的示例了,会的人请举一个简单的示例说明一下使用方法和一些注意点,谢谢!!! 展开
 我来答
匿名用户
2013-12-02
展开全部
class Test
{
public:
Test(int x = 0, int y =0)
{
X = x;
Y = y;
}
int GetX() const
{
return X;
}
int GetY() const
{
return Y;
}
void Show()
{
cout<<"X = "<<X<<endl;
cout<<"Y = "<<Y<<endl;
}
//这里重载的是==运算符,返回类型是bool,
//我们设定比较的两个对象的X变量和Y变量分别相等则这两个对象相等
//如果比较的对象与自身对象相等则返回true,否则返回false
bool operator==(const Test& t)
{
return (t.GetX() == X && t.GetY() == Y);
}

//同理这里重载运算符+,返回类型为Test的引用
Test& operator+(const Test& t)
{
X += t.GetX();
Y += t.GetY();
return *this;
}
//重载操作符=
Test& operator=(const Test& t)
{
X = t.GetX();
Y = t.GetY();
return *this;
}
private:
int X;
int Y;
};void main()
{
Test t1(3);
Test t2(3, 0);
Test t3(2, 5);
//调用==运算符
if(t1 == t2)
{
cout<<"t1 == t2"<<endl;
}
else
{
cout<<"t1 != t2"<<endl;
}
if(t1 == t3)
{
cout<<"t1 == t3"<<endl;
}
else
{
cout<<"t1 != t3"<<endl;
}
//调用+操作符
Test tmp = t1+t3;
cout<<"t2 在未赋值之前"<<endl;
t2.Show();
//调用=操作符
t2 = tmp;
cout<<"t2 在赋值之后"<<endl;
t2.Show();
}
匿名用户
2013-12-02
展开全部
例子:加法运算3+3调用的函数就是int operate+(int,int);而3.0+3.0调用的函数是float operate+(float,float);如果你将operate+(float,float)这个函数里的运算改为减法,那么3.0+3.0的结果就为0.0,重载一个运算符,就相当于根据自己需要的变量类型编写一个运算符函数。float operate+(float a,float b){
float c;c=a-b;return c;}//这就是重载
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式