原创 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保持一致性。即函數應該有正確的返回值:內存不足時