C++用重载输出一个类

Posted SurfUniverse

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++用重载输出一个类相关的知识,希望对你有一定的参考价值。

    还记得刚开始学习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++用重载输出一个类的主要内容,如果未能解决你的问题,请参考以下文章

C++学习基础八——重载输入和输出操作符

YTU 2443: C++习题 复数类--重载运算符3+

c++中重载输出操作符,为啥要返回引用

YTU 2439: C++习题 复数类--重载运算符+

C++学习27 用全局函数重载运算符

c++中重载输出流对象,为啥要返回引用