码迷,mamicode.com
首页 > 编程语言 > 详细

C++用重载输出一个类

时间:2017-04-16 12:06:36      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:studio   指定   ide   解决问题   pre   原因   方法   print   为我   

    还记得刚开始学习C++时候,对于 cout 可以直接输出各种类型的变量很好奇。

毕竟是大一刚学完C语言,知道如果要输出什么数据肯定是要指定类型输出的 printf()。

    对于C++中的一个变量 string str,使用 cout 可以直接输出string,

然而采用C中使用的 printf("%s“, str) 是绝对无法输出该变量的。因为 这里的 str 是

一个 class。而不是一个 char* 类型的变量。当然,如果非要用printf()输出 str 也不是

不可以。采用 printf("%s", str.c_str()) or printf(str.c_str()) 就可以。

 

  既然C++中的 cout 能够直接输出基本变量类型的变量(bool, short, int, long, float, double),

也能输出类(string)。如果对于我们自己创建的如下的一个类,能否直接使用 cout 输出呢?

技术分享

 

   答案是否定的,错误原因已经由 宇宙最强的IDE(Visual Studio)给提示出来了。

不过根据这个错误提示,我们也大概可以推测改进代码的方法,那就是为我们自己新建的

这个类(myClass) 重载 << 运算符。

技术分享

 

PS:

    之前在做的一个项目中,用到了 C++ 里面的 STL 的一些函数。主要是因为 STL为

我们实现好了基本的数据结构和算法,可以避免重复造轮子。在做项目之前,对于STL也

只是“久闻其声”没怎么用过,因此也是现学现用。

    虽然现学现用也完成了功能,由于缺乏对于STL 具体细节的掌握,更不清楚其底层实现。

导致有时候会遇到些“指针类错误”。而每当遇到这种问题时,为了尽快解决问题,我总是

通过搜索引擎找到一个解决方案,然后copy 到我的代码中。可是这样做的多了,我感觉很心虚。

是,的确是做了些东西,但也只是东拼西凑,缺乏了对知识系统的理解和掌握。

    痛定思痛之后,果断翻起《STL源码剖析》这本书。今天看了些基础的内容,对于其中

“重载”部分的介绍挺感兴趣。于是做了一个记录,希望能够帮助C++新人更好的掌握重载

的使用。

 

C++用重载输出一个类

标签:studio   指定   ide   解决问题   pre   原因   方法   print   为我   

原文地址:http://www.cnblogs.com/albertofwb/p/6718282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!