意想不到的结果?

tigerlhp 2008-04-07 10:54:57
请教各位师兄师姐,下面的代码结构如何,为什么?

#include <windows.h>
#include <stdio.h>

class put
{
char buffer[128];
public:
put()
{
buffer[0]=0;
}

put operator<<(const char *pt)
{
if(pt == NULL) return *this;
strcat(buffer,pt);
return *this;
}

put operator<<(const int num)
{
if(num == 0)
{
printf("%s\n",buffer);
buffer[0]=0;
}
return *this;
}

};

put sp;

void main()
{
char tmp[64] = "abcde";
int out = 0;

for(int i=0; i<100000; i++)
{
sp<<tmp<<tmp<<out;
}

}


...全文
113 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tigerlhp 2008-04-07
  • 打赏
  • 举报
回复
没包含<windows.h>
那个strcat()用不起,所以才加的.
我怕strcat()连接空指针出错,所以返回
引用是对的
Supper_Jerry 2008-04-07
  • 打赏
  • 举报
回复
结构不好,搜索流运算符重载,参考一下别人的代码。
ryfdizuo 2008-04-07
  • 打赏
  • 举报
回复
sp <<tmp <<tmp <<out; 
你要连续使用,必须返回引用;
ryfdizuo 2008-04-07
  • 打赏
  • 举报
回复
	put& operator <<(const char *pt) 
{
if(pt == NULL) return *this;
strcat(buffer,pt);
return *this;
}

put& operator <<(const int num)
{
if(num == 0)
{
printf("%s\n",buffer);
buffer[0]=0;
}
return *this;
}
ttkk_2007 2008-04-07
  • 打赏
  • 举报
回复

#include <windows.h> //没用到,你包含它干什么
#include <stdio.h>

class put
{
char buffer[128];
public:
put()
{
buffer[0]=0; //干脆点,memset(buffer, '\0', sizeof(buffer));
}

put operator < <(const char *pt) //按照你的想法,貌似应该返回引用put&,
{
if(pt == NULL) return *this; //pt是不是NULL,你都返回*this,你这还写什么
strcat(buffer,pt); //buffer一共才128字节,你保证把pt考过去,buffer能够容纳?就溢出了
return *this;
}

put operator < <(const int num) //也应该是引用,不知道这是干什么的
{
if(num == 0)
{
printf("%s\n",buffer);
buffer[0]=0;
}
return *this;
}

};

put sp;

void main()
{
char tmp[64] = "abcde";
int out = 0;

for(int i=0; i <100000; i++)
{
sp < <tmp < <tmp < <out;
}

}
//不及格,鉴定完毕!
baihacker 2008-04-07
  • 打赏
  • 举报
回复
put 是动词,用来当类名不大恰当...剩下的就没有兴趣看了
taodm 2008-04-07
  • 打赏
  • 举报
回复
找本《C++ Primer》翻到运算符重载章节,看“流运算符重载”

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧