c++运算符重载问题又可能是优先级问题
本帖最后由 小剑剑 于 2016-8-10 08:37 编辑一共三个文件很简单的代码
文件3的其中一句有错但不理解
开始我以为是优先级问题,但b<<(a<<cout);没有出错,证明优先级没问题,那为什么多了一个c就出错了呢??
文件1#include <string>
#include <iostream>
#ifndef prog_h
#define prog_h
namespace prog
{
using namespace std;
class Prog
{
private:
string name;
int cp;
public:
Prog();
Prog(const int ,string const na="Ploga");
void changep(const int);
ostream& operator <<(ostream &os)const
{
os<<name<<endl;
os<<cp<<endl;
return os;
}
};
}
#endif // prog_h
文件2
#include "prog.h"
using namespace prog;
Prog::Prog()
{
name="Plorga";
cp=50;
}
Prog::Prog(const int c,const string na)
{
cp=c;
if (na.size()>19)
{
cout<<"name is too long "<<endl;
return ;
}
name=na;
}
void Prog::changep(const int c)
{
cp=c;
}
文件3
#include <iostream>
#include "prog.h"
using namespace prog;
int main()
{
Prog a(1),b(2,"123"),c();
(b<<(a<<cout));
c<<(b<<(a<<cout));//这里会出错这里会出错这里会出错
}
求解,另外代码有哪里不够好的,大家请指出{:9_240:}
本帖最后由 DarkSE 于 2016-8-10 09:38 编辑
{:10_249:}{:10_249:}错在你那个c,不要加括号
一开始看到<<cout,也是一脸懵逼,{:9_240:} {:9_240:} 很少看到这么用的 <<cout ???{:10_249:} 非主流代码看的蛋疼 lx_Zz 发表于 2016-8-10 10:43
非主流代码看的蛋疼
这个还不算非主流吧,就是重载运算符而已 DarkSE 发表于 2016-8-10 09:35
错在你那个c,不要加括号
一开始看到
??{:9_241:}可以说一下哪里吗 我是学C的,没见过你这种方式,不过大概意思我看明白了,我就想知道 你把OS里面赋值给a,b,c你定义这是啥类型,OS里面的东西不就是 一些字符串加一个int型的数嘛,你准备拿什么保存? 1366627538 发表于 2016-8-11 21:06
我是学C的,没见过你这种方式,不过大概意思我看明白了,我就想知道 你把OS里面赋值给a,b,c你定义这是啥 ...
你理解错了,<<不是赋值,os是一个对象 DarkSE 发表于 2016-8-10 09:35
错在你那个c,不要加括号
一开始看到
看到了,声明变量那里。。。{:9_239:} 小剑剑 发表于 2016-8-12 08:09
你理解错了,
c++中<<这就叫数据流了吧,不是把OS里的东西给a,b,c的意思? 1366627538 发表于 2016-8-12 20:28
c++中
这里重载了
页:
[1]