關鍵字 explicit
用於告知編譯器,該建構函式可以用於完成隱式型別轉換(implicit type conversation)!
建議:除非有乙個很好的理由,否則將建構函式申明為 explicit!
c++是乙個由多個次語言組成的語言聯邦
c 風格
物件導向的c
泛型c++
stl-c++
不同的次語言尤其各自的程式設計守則,以傳遞引數為例,若編寫c風格的c++, 傳值比傳遞引用更高效,而在物件導向的c與泛型程式設計中 const reference更安全可靠,到了stl_c++又回歸傳值更高,這與次語言本身的程式設計正規化與實現方式有關。
盡量用enum,inline和const來代替define(用編譯器代替預處理)
//the enum hack:
class myclass{
privat:
enum {turns = 6};
intarray[turns];
};
盡量使用const,只要不違反設計需求
對於const成員函式,const表明該函式可以「操作const物件」!!!而c++中,const常量性不同的兩個函式可以完成過載!!!
const
char print( const mystring cstr) const
// 對於類成員函式,避免const版本與非const版本重複的技巧:
// 讓非const成員函式在內部呼叫cosnt函式
class textblock
char& operator(std::size_t pos ) // non-const version
};
確定物件被使用前已經被初始化
-對於無成員的內建型別,在宣告時手工完成初始化
-對自定義類型別,使用初始化列表(member initialization lists)進行初始化!確保建構函式對每乙個成員變數進行初始化(即使是無參的default建構函式,也可以使用無物的初始化列表) ->解決引用型別、const型別的初始化問題!!!
-利用單例模式(singleton pattern)的設計方法,解決non-local static例項的初始化問題
myclass
::myclass
:thename(),theadreee(),thenum()
{};
6.
2016.10.21 待續
《effective c 》閱讀筆記 1
之前閱讀一部分 effective c 作為一本被眾多讀者所推薦的書自然有它的獨特的魅力所在。在 過一部分該書的一部分內容之後,不由的覺得該書確實是集c 精華於一身,同時還加以科普了很多相對來說在一般老式課本難以見到的語法和語句,如智慧型指標等用法,並舉出例項將該其與其他語法相對而言的優點凸顯出來。...
Effective C 閱讀筆記1
條款18讓介面容易被正確使用,不易被誤用 重定義介面的型別,比如 data int day,int month,int year 替換為 data day d,month m,year y 這樣的好處在於較好的防止輸入順序出錯 可以對各型別加入束縛值,進一步預防呼叫出錯,比如month類別只允許1 ...
Effective C 閱讀筆記
2019年九月四日 緒論 explicit的用法 用於建構函式,防止出現隱式型別轉換,例子 include using namespace std class object object void dosomething object b int main int argc,char const a...