原创 Effective_C++:2、儘量以iostream取代stdio.h

2、儘量以<iostream>取代<stdio.h>1、<iostream>與<stdio.h>       <stdio.h>是C語言的包含標準輸入輸出函數的頭文;<iostream>是C++的頭文件。2、爲啥要取代<stdio.h> 

原创 Effective_C++:5、使用相同形式的new和delete

5、使用相同形式的new和delete1、new和delete        new和delete是C++用來動態內存申請和釋放的操作符,會調用構造函數和析構函數。在Effective_C++:3、儘量以new和delete取代mallo

原创 Effective_C++:4、儘量使用C++風格的註釋形式

4、儘量使用C++風格的註釋形式1、註釋         舊有的C註釋語法是/*...*/,註釋多行,而新的C++單行註釋爲//。2、註釋可能出現的問題       如下, 如果要註釋掉多行代碼,其中包含有註釋部分,註釋會在遇到第一個*/

原创 Effective_C++:7、爲內存不足的狀況預做準備

7、爲內存不足的狀況預做準備1、使用new時內存不足        當operator new無法配置內存時,會拋出一個異常exception(過去會傳回0,部分老舊編譯器可能仍是如此),std::bad_alloc即是拋出的異常,繼承於

原创 Effective_C++:15、令operator=傳回“*this的reference”

15、令operator=傳回“*this的reference”1、const變量、const指針、const引用        const變量是指變量的值不能改變,const指針是指使用該指針不能改變他指向的對象的值,const引用是指

原创 Effective_C++:16、在operator=中爲所有的data members設定(賦值)內容

16、在operator=中爲所有的data members設定(賦值)內容1、默認的assignment運算符與自定義的assignment運算符        在自定義一個class時,若沒有聲明assignment運算符,則編譯器會

原创 Effective_C++:6、記得在destructor中以delete對付pointer members

6、記得在destructor中以delete對付pointer members1、在constructor中添加pointer members        class要進行動態配置內存,會在構造函數裏以new配置內存,在析構函數裏de

原创 Effective_C++:9、避免遮掩了new的正規形式

9、避免遮掩了new的正規形式1、遮掩new的正規形式        內部的一個聲明名稱,會遮掩外邊部的相同名稱。即若全局區域和class內部都有函數f(),成員函數可能會遮掩掉全局函數。        因此,當給class加進一個ope

原创 Effective_C++:12、在構造函數中儘量以initialization(初始化)動作取代assignment(賦值)動作

12、在構造函數中儘量以initialization(初始化)動作取代assignment(賦值)動作1、initialization(初始化)動作        首先,得強調一下,初始化動作是在構造函數中使用的。僅當定義構造函數時,有兩

原创 Effective_C++:17、在operator=中檢查是否“自己賦值給自己”

17、在operator=中檢查是否“自己賦值給自己” 1、爲何檢查是否“自己賦值給自己” 在使用賦值操作符時,我們只要求調用的對象類型、參數類型正確即可。所以,自己賦值給自己是完全合法的,如可能將一個對象的別名作爲另一個對象賦值給這個對

原创 Effective_C++:10、如果你寫了一個operator new,請對應寫一個operator delete

10、如果你寫了一個operator new,請對應寫一個operator delete1、何時需要寫一個operator new        缺省版的operator new和delete功能已經足夠了,但不可避免的是他可能需要花費更

原创 Effective_C++:3、儘量以new和delete取代malloc和free

3、儘量以new和delete取代malloc和free1、malloc和free        malloc和free是C語言中申請和釋放動態內存的函數,malloc申請在堆上尋找一塊指定大小的內存,返回一個void類型的指針,指向該內

原创 Effective_C++:1、儘量以const和inline取代#define

1、儘量以const和inline取代#define1、#define是啥        #define被稱爲宏定義,是用來定義一個常量的,會在預編譯期間直接進行文本替換。主要用於以下場景:        1.後接一個參數,用來定義標識,

原创 Effective_C++:14、總是讓base classs擁有virtual destructor

14、總是讓base classs擁有virtual destructor1、爲啥讓base classs擁有virtual destructor        在含有繼承關係的情況中,讓基類的析構函數爲虛函數,則在銷燬指向派生類的基類指

原创 Effective_C++:8、撰寫operator new和operator delete時應遵守的公約

8、撰寫operator new和operator delete時應遵守的公約1、撰寫operator new時應遵守的公約        1.函數行爲應該與缺省的operator  new保持一致性。即函數應該有正確的返回值:內存不足時