鱼C论坛

 找回密码
 立即注册
查看: 2170|回复: 10

c++运算符重载问题又可能是优先级问题

[复制链接]
发表于 2016-8-10 08:34:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 小剑剑 于 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));//这里会出错这里会出错这里会出错


}
求解,另外代码有哪里不够好的,大家请指出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-8-10 09:35:05 | 显示全部楼层
本帖最后由 DarkSE 于 2016-8-10 09:38 编辑

错在你那个c,不要加括号
一开始看到<<cout,也是一脸懵逼, 很少看到这么用的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-10 10:36:52 | 显示全部楼层
<<cout ???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-10 10:43:57 | 显示全部楼层
非主流代码看的蛋疼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-11 15:28:30 | 显示全部楼层
lx_Zz 发表于 2016-8-10 10:43
非主流代码看的蛋疼

这个还不算非主流吧,就是重载运算符而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-11 15:33:25 | 显示全部楼层
DarkSE 发表于 2016-8-10 09:35
错在你那个c,不要加括号
一开始看到

??可以说一下哪里吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-11 21:06:39 | 显示全部楼层
我是学C的,没见过你这种方式,不过大概意思我看明白了,我就想知道 你把OS里面赋值给a,b,c你定义这是啥类型,OS里面的东西不就是 一些字符串加一个int型的数嘛,你准备拿什么保存?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你理解错了,<<不是赋值,os是一个对象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-12 09:38:49 | 显示全部楼层
DarkSE 发表于 2016-8-10 09:35
错在你那个c,不要加括号
一开始看到

看到了,声明变量那里。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-12 20:28:49 | 显示全部楼层

c++中<<这就叫数据流了吧,不是把OS里的东西给a,b,c的意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-13 22:18:05 | 显示全部楼层

这里重载了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 07:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表