1.std::size_t numdigits(int number)
函式返回型別被定義為std::size_t ,這表示size_t是被定義在std命名空間之內。std幾乎是所有c++標準程式庫元素的棲身之處。
另外size_t只是乙個typedef,是c++計算個數時用的不帶正負號型別(unsigned),例如char* -base 字串內的字元個數,stl容器內元素的個數。
它也是vector,deque,string內的operator[ ] 函式接受的引數型別。
2.初始化(initialization)是「給予物件賦初值」的過程。對使用者自定義型別而言,初始化由建構函式完成。所謂default建構函式是乙個可被呼叫而不帶任何實參者。這樣的建構函式要麼沒有引數,要不每個引數都有預設值。
class a{
public : a(); //default 建構函式
class b{
public : explicit b(int x=0,bool b=true); //default 建構函式
class c{
public : explicit c(int x); //不是default建構函式
被宣告成explicit的建構函式通常比non-explicit兄弟更受歡迎,因為它禁止編譯器執行非預期的型別轉換。
3.default建構函式,copy建構函式,copy assignment 操作符區別
class widget{
public :
widget(); //default 建構函式
widget(const widget& rhs); //copy 建構函式
widget& operator=(const widget& rhs); //copy assignment 操作符
widget w1; //呼叫default建構函式
widget w2(w1); //呼叫copy建構函式
w1=w2; //呼叫copy assignment 操作符
widget w3 = w2; //呼叫copy建構函式
有新物件被定義如w3,則一定有建構函式被呼叫。而沒有新物件定義如w1=w2,就不會有建構函式被呼叫。
C reference 那些容易被忽視的細節
工作之餘做個小結。te為實體型別,td為推斷型別 引用建立時即初始化賦值。作為函式引數時,程式進入函式就已經初始化完畢。注意區分值與值的引用。一旦創造了te t右值引用便有了別名,t的行為變成左值 傳入td 模板為左引用,但t列印出的型別依然為右值引用是別名,構造好的引用可當作自身,引用之間的非初始...
容易被忽視的synchronized
public static final synchronized callmanager getinstance return minstance synchronized,多執行緒訪問同步鎖,具有以下特性 1 同一時間只允許乙個執行緒訪問 2 在乙個執行緒訪問synchronized 塊時,另乙個...
sql 容易被忽視的點
1 dual select查詢語句只有 select 就可以,但為了規範,湊結構,可以加個 dual 例 select now from dual 這個概念是oracle中的。在mysql中可寫可不寫。2 drop,delete truncate 的區別drop用於刪除資料庫,資料表的字段,刪除表 ...