之前學校開C++課程的時候,只是籠統的大概講了一下C++的一些基本語法,但都是很淺的知識。極客班的課程還能深入講解標準庫的東西,確實是課堂上學不到的。
學習C++分為語言部分和標準庫的部分,在學好語言的時候,還要學習一些標準庫的東西。如果作為一名C++的工程師,不會標準庫的話,是沒有競爭力的。所以,老師推薦的《C++ Primer》我也買來看了,確實寫的很好,不愧是百科級別的書籍,但里面的很多C++11標準的一些代碼,目前我的編譯器還暫時識別不了。
C++代碼的基本形式:
頭文件:.h ? ?(自己寫的頭文件是雙引號)
程序部分:.cpp
C語言時代,頭文件是 stdio.h 或者 cstdio,輸入輸出用scanf和printf,寫的時候可能會少符號
C++語言時代:iostream ? ?輸入輸出方便許多,cin>>和cout<<
編寫自己的頭文件:
#ifndef 頭文件名(大寫)
#define ? ? 同上
#include
1.前置聲明
2.類聲明
3.類定義
#endif
class + 類名
{
數據成員定義在私有private里
成員函數定義在公有里,絕大多數函數都放在public里
公有和私有順序可以交錯
};
模板:
template//T為模板名
private:
T re,im;
complex c1(2.5,1.5);
complex c2(2,6);
內聯函數:
在函數內部定義的是隱式內聯函數
外部定義內聯函數需加上 inline
inline const string & shorterString(const string &s1, const string &s2)
{
return s1.size() <= s2.size() ? s1 : ?s2 ;
}
創建對象會調用其構造函數
complex c1(2,1);
cout<< c1.real();
cout<< c2.imag();
不能通過對象調用私有成員
數據一定要被自己內部的函數傳遞出去,不能被外部的函數訪問
函數如果要被外界調用的,放在公有里
函數只是做內部的處理,可以作為私有
構造函數:
函數名稱與類名一致
可以用于參數
參數(實參)指定默認值
沒有返回類型
利用構造函數的特殊用法:初始化形參
構造函數可以有很多個
構造函數在參數不確定但又重載的情況下,會編譯錯誤
double reaal() const { return re; ?}//不會改變數據的,加上const
參數傳遞值時,盡量以傳遞引用(by reference)的方式更高效快捷方便
傳遞過去的時候,不希望對方改,這時要加const
友元函數:
相同的一個類內的各個部分互為友元
數據一定放在私有里
參數盡可能以引用來傳
返回值也盡量以引用來傳
在類的本體里的函數,應該加const的就加
構造函數特殊語法