關于構造函數(shù)之后的冒號:
構造函數(shù)后面跟冒號,就相當于:
系統(tǒng)創(chuàng)建成員變量并且初始化涧郊。也就是系統(tǒng)為成員變量分配了一塊內存并且把相應的數(shù)據(jù)給填了進去。而構造函數(shù)里面調用等于號的方式是分配好后再進行賦值,多了一個步驟渴丸。
class Action {
public:
Action() : file_act_(nullptr),
buf_act_(nullptr) {
}
};
友元函數(shù)
解釋是:類的友元函數(shù)是定義在類外部,但有權訪問類的所有私有(private)成員和保護(protected)成員另凌。盡管友元函數(shù)的原型有在類的定義中出現(xiàn)過谱轨,但是友元函數(shù)并不是成員函數(shù)。
亦即通過在類的聲明里定義了一個友元函數(shù)吠谢,它再在外面實際定義時就可以直接訪問內部私有變量土童。
關于C++11/14
C++11/14特性里面有很爽的幾點,其中最大的特點就是加入了auto
關鍵字工坊,用于自動判斷變量類型献汗。還有就是對于循環(huán)所有變量敢订,加入了如同python中in xxxx
一樣的特性:
for (auto &&keyword : keywords) {
//內部處理
}
C++的這些特性,感覺真是一門時時更新的語言罢吃。
string::npos
string::npos作為string的成員函數(shù)的一個長度參數(shù)時楚午,表示“直到字符串結束(until the end of the string)
new、delete 與指針
在C++中刃麸,操作符new 用于申請內存醒叁,操作符delete 用于釋放內存。在C 語言中泊业,函數(shù)malloc 用于申請內存把沼,函數(shù)free 用于釋放內 存。由于C++兼容C 語言吁伺,所以new饮睬、delete、malloc篮奄、free 都有可能一起使用捆愁。new 能比malloc 干更多的事,它可以申請對象的內存窟却,而malloc 不能昼丑。C++和C 語言中的指針威猛無比,用錯了會帶來災難夸赫。對于一個指針p菩帝,如果是用new申請的內存,則必須用delete 而不能用free 來釋放茬腿。如果是用malloc 申請的內存呼奢,則必須用free 而不能用delete 來釋放。在用delete 或用free 釋放p 所指的內存后切平,應該馬上顯式地將p 置為NULL握础,以防下次使用p 時發(fā)生錯誤。示例程序如下:
void Test(void)
{
float *p;
p = new float[100];
if(p==NULL) return;
…// do something
delete p;
p=NULL; // 良好的編程風格
// 可以繼續(xù)使用p
p = new float[500];
if(p==NULL) return;
…// do something else
delete p;
p=NULL;
}