小剑剑 发表于 2016-8-10 08:34:30

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:35:05

本帖最后由 DarkSE 于 2016-8-10 09:38 编辑

{:10_249:}{:10_249:}错在你那个c,不要加括号
一开始看到<<cout,也是一脸懵逼,{:9_240:} {:9_240:} 很少看到这么用的

丹小怪 发表于 2016-8-10 10:36:52

<<cout ???{:10_249:}

lx_Zz 发表于 2016-8-10 10:43:57

非主流代码看的蛋疼

小剑剑 发表于 2016-8-11 15:28:30

lx_Zz 发表于 2016-8-10 10:43
非主流代码看的蛋疼

这个还不算非主流吧,就是重载运算符而已

小剑剑 发表于 2016-8-11 15:33:25

DarkSE 发表于 2016-8-10 09:35
错在你那个c,不要加括号
一开始看到

??{:9_241:}可以说一下哪里吗

1366627538 发表于 2016-8-11 21:06:39

我是学C的,没见过你这种方式,不过大概意思我看明白了,我就想知道 你把OS里面赋值给a,b,c你定义这是啥类型,OS里面的东西不就是 一些字符串加一个int型的数嘛,你准备拿什么保存?

小剑剑 发表于 2016-8-12 08:09:03

1366627538 发表于 2016-8-11 21:06
我是学C的,没见过你这种方式,不过大概意思我看明白了,我就想知道 你把OS里面赋值给a,b,c你定义这是啥 ...

你理解错了,<<不是赋值,os是一个对象

小剑剑 发表于 2016-8-12 09:38:49

DarkSE 发表于 2016-8-10 09:35
错在你那个c,不要加括号
一开始看到

看到了,声明变量那里。。。{:9_239:}

1366627538 发表于 2016-8-12 20:28:49

小剑剑 发表于 2016-8-12 08:09
你理解错了,

c++中<<这就叫数据流了吧,不是把OS里的东西给a,b,c的意思?

小剑剑 发表于 2016-8-13 22:18:05

1366627538 发表于 2016-8-12 20:28
c++中

这里重载了
页: [1]
查看完整版本: c++运算符重载问题又可能是优先级问题