還記得剛開始學習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++新人更好的掌握重載 的使用。