社区
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
请问是怎么回事
...全文
541
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++ 递增
运算符
重载
案例代码
参考“黑马程序员”c++ 课程 递增
运算符
重载
如有侵权请联系删除 本系列文件: 递增
运算符
重载
赋值
运算符
重载
关系
运算符
重载
函数调用
运算符
重载
加号
运算符
重载
左移
运算符
重载
供和我一样的c++新手参考,大家一起加油!
C++ 中
重载
和
运算符
重载
加号
实现矩阵相加实例代码
C++
重载
+
运算符
重载
加号
实现矩阵相加 学习C++ 基础知识,这里实现简单的实例,记录下自己学习生活,很简单,大家一起看看吧! 实例代码: #include
#include
using namespace std; class Complex { private: int i,j,n,a[2][3]; public: Complex(); Complex operator+(Complex &c); void display(); void input(); } t1; Compl
实验二:友元和函数
重载
1. 友元的使用。 2. 掌握
重载
函数的实现方法。 3. 综合应用。
C++中不能被
重载
的
运算符
介绍
C/C++ 里大多数
运算符
都可以在 C++ 中被
重载
。C 的
运算符
中只有 . 和 ?:(以及 sizeof,技术上可以看作一个
运算符
)不可以被
重载
。C++ 增加了一些自己的
运算符
,除了 :: 和 .* 外,大多数都可以被
重载
。 您可能感兴趣的文章:详解C++编程中的单目
运算符
重载
与双目
运算符
重载
C++
运算符
重载
规则详解简介C++编程中的
运算符
重载
c++ *
运算符
重载
C++
重载
运算符
的规则详解解析C++中不能
重载
为友元函数的四个
运算符
C++
运算符
重载
成员函数与友元函数详解C++ 中
重载
和
运算符
重载
加号
实现矩阵相加实例代码
C++作业2-29
一个C++的平时作业,关于
运算符
的
重载
,
重载
加号
,可以用于复数结构体的加法运算。
C++ 语言
64,685
社区成员
250,491
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章