意想不到的结果?

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;
}

}


...全文
89 7 打赏 收藏 转发到动态 举报
写回复
用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》翻到运算符重载章节,看“流运算符重载”
【为什么要学习这门课?】  几乎世界上的每一家公司都在评估自己的数字战略,并寻找利用数字化进行业务转型的机会。大数据分析和机器学习是这一战略的核心。几乎每个行业的高管、数字架构师、IT管理员和通信运营人员都需要了解数据处理和人工智能的基础知识。 【课程亮点】  在本课程中,经验丰富的两位讲师提供了有效的经验指导,带领大家探索大数据分析、监督学习、无监督学习和神经网络的基本原理。除了深入研究基本概念外,还举例介绍了不同行业的大数据和机器学习用例,并演示了数据科学家和研究人员在不同领域使用的最常见工具(如Hadoop、TensorFlow、Matlab/Octave、R和Python)。通过本课程的学习能够帮助您熟练掌握大数据分析和机器学习的原理及相关应用技能。  【讲师介绍】  Jerome Henry(杰罗姆·亨利)—— Cisco思科首席工程师、思科最佳培训讲师Jerome Henry(杰罗姆·亨利)Jerome Henry(杰罗姆·亨利)目前是思科系统公司企业基础设施和解决方案组的首席工程师。他有超过15年在15个国家用4种语言教授思科技术课程的丰富经验,超过10,000小时的培训经历,也让他被授予思科IT培训奖最佳讲师银质奖章。其实,杰罗姆很早起就为欧洲无线网关制造商 Airespace公司(后被思科收购)提供技术咨询和培训,教授异构网络和无线集成。杰罗姆是一名获得认证的无线网络专家(CWNE No. 45),开发了多门思科课程,撰写了几本无线书籍。同时,他也是IEEE的成员,并于2013年被提升为高级成员,并加入了Wi-Fi联盟工作组,专注于物联网和低功耗研究。 Robert Barton(罗伯特·巴顿)—— 双CCIE & CCDE、思科数据中心专家Robert Barton(罗伯特·巴顿)Robert Barton(罗伯特·巴顿)毕业于哥伦比亚大学工程物理学专业,拥有路由、交换和安全双CCIEs,也是加拿大第一个CCDE。罗伯特目前在思科担任数据中心专家、公共部门系统工程师,主要从事无线和安全架构方面的工作。 【课程收获】 1、了解静态和实时流数据是如何收集、分析和使用的;2、了解机器学习和模仿人类思维的关键工具和方法; 3、如何收集非结构化数据,为分析和可视化做准备; 4、学会比较和对比各种大数据架构; 5、学会将有监督学习、线性回归、数据拟合及强化学习应用到机器学习上,以产生想要的信息结果; 6、将分类技术应用于机器学习,以更好地分析数据; 7、利用无监督学习的好处,收集到你意想不到的数据价值; 8、了解人工神经网络(ANNs)如何进行深度学习,并获得令人叹服的结果;9、应用主成分分析(PCA)改进数据分析的管理;10、了解在真实系统上实现机器学习的关键方法,以及在进行机器学习项目时必须考虑的各种事项;

64,637

社区成员

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

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