社区
C++ 语言
帖子详情
加号运算符的重载问题
hongfeeling
2003-12-08 09:12:00
test & operator+(test & i1,test & i2)
{
x = i1.x+i2.x;
return *this;
}
编译出错:test::operator+(test &,test&)must take either zero or one argument
请问是怎么回事
...全文
571
12
打赏
收藏
加号运算符的重载问题
test & operator+(test & i1,test & i2) { x = i1.x+i2.x; return *this; } 编译出错:test::operator+(test &,test&)must take either zero or one argument 请问是怎么回事
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hongfeeling
2003-12-18
打赏
举报
回复
谢谢大家的回复
allen_zhaozhencn
2003-12-09
打赏
举报
回复
楼上同志讲得有理,
建议如下定义:
class complex
{
private:
float real;
float imagic;
public:
friend complex operator+(const complex& c1) const;
};
complex operator+(const complex &c1) const
{
return complex(real+c1.real, imagic+c1.imagic);
}
hanyixin
2003-12-08
打赏
举报
回复
我觉得+应该做成全局函数,+=才应该做成类的成员函数。
fireseed
2003-12-08
打赏
举报
回复
应该是这样:
class A
{
public:
int n;
};
A operator+(A & i1,A & i2)
{
A a;
a.n= i1.n + i2.n;
return a;
}
或:
class B
{
public:
int n;
B operator+(B & i1);
};
B B::operator+(B & i1)
{
B b;
b.n= n + i1.n;
return b;
}
fireseed
2003-12-08
打赏
举报
回复
class A
{
public:
int n;
};
A& operator+(A & i1,A & i2)
{
i1.n = i1.n + i2.n;
return i1;
}
fireseed
2003-12-08
打赏
举报
回复
你是不是把这个放到类里面去了?
glacierrr
2003-12-08
打赏
举报
回复
一般二元操作符定义成友元函数,一元函数定义成类成员函数比较好一点
hongfeeling
2003-12-08
打赏
举报
回复
谢谢大家指教了。
我看的是C++PRIMER。
似乎对操作符重载讲的不多。
不知道,各位是看什么的/
wshcdr
2003-12-08
打赏
举报
回复
test & operator+(test & i1,test & i2)
{
x = i1.x+i2.x;
return *this;
}
编译出错:test::operator+(test &,test&)must take either zero or one argument
请问是怎么回事
楼主的test & operator+(test & i1,test & i2)这个函数声明为全局
那return *this;这句就和上一句矛盾了,
呵呵
redhat_xu
2003-12-08
打赏
举报
回复
我想这样写比较好一点!
class complex
{
private:
float real;
float imagic;
public:
complex operator+(const complex&) const;
};
complex complex::operator+(complex &c1)
{
return complex(real+c1.real, imagic+c1.imagic);//防止重复声明类对象.
}
其实加号重载可以设为友元的运算符重载!
不知这样是否能帮上你的忙!
个人意见仅供参考!
Wolf0403
2003-12-08
打赏
举报
回复
operator+ 只能有两种重载形势:一个是作为成员函数,接受一个参数;一个是作为非成员函数(友元),接受两个参数。另外:
test & operator+(test & i1,test & i2)
{
x = i1.x+i2.x;
return *this;
}
这个是 operator+= 的语义而不是 operator+ 的语义,不推荐。
test operator+ (const test &i1, const test &i2)
{
return test(i1.x + i2.x);
}
或者
test test::operator+ (const test &i)
{
return test(this->x + i.x);
}
hongfeeling
2003-12-08
打赏
举报
回复
哦。对的。我放在类的定义里面了。
为什么不可以这么做?
c++
运算符
重载
.txt
1、什么是
运算符
重载
? 对已有的
运算符
重新进行定义,赋予其另外一种功能,以适应不同的数据类型。 2、
加号
运算符
重载
。 对于int这种数据类型,
加号
+是懂得怎么加的,所以int的数据类型相加不会有
问题
。 对于Person这种数据类型,
加号
+是不懂得怎么加的,所以Person的数据类型相加就会编译出错。 如何告诉
加号
怎么去加Person数据类型的呢? -->
加号
运算符
重载
P121~126C++类和对象C++
运算符
重载
学习笔记.docx
P121~126C++类和对象C++
运算符
重载
学习笔记.docx
C++程序设计课件 ch10
运算符
重载
C++程序设计课件 第十章
运算符
重载
10.1 什么是
运算符
重载
10.2
运算符
重载
的方法 10.3
重载
运算符
的规则 10.4
运算符
重载
函数作为类成员函数和友元函数 10.5
重载
双目
运算符
10.6
重载
单目
运算符
10.7
重载
流插入
运算符
和流提取
运算符
10.8 不同类型数据间的转换
C#之
运算符
重载
.pptx
C#
运算符
重载
的含义、应用
友元和
运算符
重载
.pdf
友元和
运算符
重载
.pdf
C++ 语言
65,206
社区成员
250,519
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章