社区
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
请问是怎么回事
...全文
561
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
作业
写回复
配置赞助广告
用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
2、
加号
运算符
重载
。 对于int这种数据类型,
加号
+是懂得怎么加的,所以int的数据类型相加不会有
问题
。 对于Person这种数据类型,
加号
+是不懂得怎么加的,所以Person的数据类型相加就会编译出错。 如何告诉
加号
怎么...
P121~126C++类和对象C++
运算符
重载
学习笔记.docx
在本文中,我们将详细介绍C++
运算符
重载
的概念、
加号
运算符
重载
、左移
运算符
重载
和递增
运算符
重载
。 4.5
运算符
重载
概念
运算符
重载
是指对已有的
运算符
重新进行定义,赋予其新的功能,以适应不同的数据类型。...
C++程序设计课件 ch10
运算符
重载
在C++中,我们也可以对自定义的类进行
运算符
重载
,比如让
加号
(+)对复数对象执行加法操作。 接下来,我们来讨论
运算符
重载
的方法。
运算符
重载
可以通过两种方式实现:作为类成员函数和作为友元函数。作为类成员函数...
C#之
运算符
重载
.pptx
【示例 9-1 】以下代码演示对 Team 类实现
加号
运算符
的
重载
。 public static Team operator + (Team oper1,Team oper2) { //方法代码暂时省略} 9.2.1 一元
运算符
重载
一元
运算符
只有一个操作数。常见的一元
运算符
...
友元和
运算符
重载
.pdf
例如,通过
重载
加号
运算符
,可以让类的对象能够进行加法运算。
重载
运算符
本质上是函数,但它们可以使用直观的
运算符
符号调用,使得代码更加易读和易于编写。 尽管友元和
运算符
重载
为C++提供了极大的灵活性,但它们...
C++ 语言
65,184
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章