C++ 中的运算符的重载
这是我写的源代码:/*关于c++符号的重载*/#include<iostream>usingnamespacestd;classPoint{friendPointoper...
这是我写的源代码:
/*关于c++ 符号的重载*/
#include<iostream>
using namespace std;
class Point
{
friend Point operator + (const Point &,const Point &);
friend Point operator = (const Point &);
public:
int x;
int y;
Point()
{
x = 0;
y = 0;
}
Point(int a,int b)
{
x = a;
y = b;
}
void print()
{
cout << "x = " << x << ";y = " << y << endl;
}
};
Point operator + (const Point & a,const Point & b)
{
x = a.x + b.x;
y = a.y + b.y;
return *this;
}
Point operator = (const Point & a)
{
x = a.x;
y = a.y;
return *this;
}
int main
{
Point object1(1,2);
Point object2(3,4);
Point object;
object = object1 + object2;
object.print();
return 0;
}
结果编译的结果是:
--------------------Configuration: test - Win32 Debug--------------------
Compiling...
test.cpp
F:\visual c++\test\test.cpp(6) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 1786)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
执行 cl.exe 时出错.
大虾能否帮忙看看
还是不太明白啊 展开
/*关于c++ 符号的重载*/
#include<iostream>
using namespace std;
class Point
{
friend Point operator + (const Point &,const Point &);
friend Point operator = (const Point &);
public:
int x;
int y;
Point()
{
x = 0;
y = 0;
}
Point(int a,int b)
{
x = a;
y = b;
}
void print()
{
cout << "x = " << x << ";y = " << y << endl;
}
};
Point operator + (const Point & a,const Point & b)
{
x = a.x + b.x;
y = a.y + b.y;
return *this;
}
Point operator = (const Point & a)
{
x = a.x;
y = a.y;
return *this;
}
int main
{
Point object1(1,2);
Point object2(3,4);
Point object;
object = object1 + object2;
object.print();
return 0;
}
结果编译的结果是:
--------------------Configuration: test - Win32 Debug--------------------
Compiling...
test.cpp
F:\visual c++\test\test.cpp(6) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 1786)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
执行 cl.exe 时出错.
大虾能否帮忙看看
还是不太明白啊 展开
4个回答
展开全部
重载操作符'='必须使用成员函数,不能用友元。
补充:aaaggg722朋友说我说的不对,我说的不是所有的都不能用友元,而是说'='不能用,请看百度百科的说明。
(1)如果一个重载操作符是类成员,那么只有当跟它一起使用的左操作数是该类对象时,它才会被调用,如果该操作符的左操作数必须是其他类型,那么重载操作符必须是非类成员操作符重载。
(2)C++要求,赋值(=),下标([ ]),调用(())和成员访问箭头(->)操作符必须被指定为类成员操作符,否则错误。
补充:aaaggg722朋友说我说的不对,我说的不是所有的都不能用友元,而是说'='不能用,请看百度百科的说明。
(1)如果一个重载操作符是类成员,那么只有当跟它一起使用的左操作数是该类对象时,它才会被调用,如果该操作符的左操作数必须是其他类型,那么重载操作符必须是非类成员操作符重载。
(2)C++要求,赋值(=),下标([ ]),调用(())和成员访问箭头(->)操作符必须被指定为类成员操作符,否则错误。
参考资料: http://baike.baidu.com/view/1033032.htm
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
重载函数怎么写成私有函数了
这样在类外是不能被调用的
不过楼上说重载函数不可以是友元这是错误的
很多重载运算都是用友元写的
友元函数没有this指针 不能用当前对象
在程序中有return *this肯定是错误的
不过重载函数为成员函数时是可以的
这样在类外是不能被调用的
不过楼上说重载函数不可以是友元这是错误的
很多重载运算都是用友元写的
友元函数没有this指针 不能用当前对象
在程序中有return *this肯定是错误的
不过重载函数为成员函数时是可以的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
参考答案 有的时候,选择放手并不是无法坚持,只是因为你发现有些事情注定无法实现。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你将头文件改为#include<iostream.h>就可以了哈!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询