还记得刚开始学习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++新人更好的掌握重载 的使用。
时间: 2024-10-20 18:56:55