程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Effective C++讀書筆記(0)

Effective C++讀書筆記(0)

編輯:C++入門知識

美國聯邦調查局(FBI)局長羅伯特·米勒2日表示,在不遠的未來,網絡恐怖主義會成為與當前恐怖主義模式相當或更嚴重的威脅。
 
    米勒當天在參議院舉行的關於全球威脅的聽證會上警告說,FBI和其他情報機構應改變結構,以應對這類日益嚴重的威脅。
 
    米勒說:“關於互聯網目前我們做得很少。侵犯知識產權、竊取研發成果、竊取企業發展方案和計劃等,所有這些事件都很容易被攻擊者利用。”
 
    他還表示,情報機構應該像9·11恐怖襲擊後那樣“共享信息”。他強調說:“我們必須建立應對此類威脅的共同機制,就像9·11後我們所做的那樣,打破部門間的藩籬。”
 
    米勒希望國會能通過一項應對網絡恐怖主義威脅的法案,把調查和情報機構變成“信息接收者”。他說,這將有助於FBI和其他機構分享關於某個案件的信息。
 
    米勒在周二舉行的一次聽證會上曾警告說,應把網絡恐怖主義、黑客攻擊、戰略網絡的脆弱性對美國構成的威脅放在頭等重要的位置。
 
    他說,制止恐怖主義襲擊是FBI當前的首要任務,但未來網絡威脅將成為美國最大的安全問題。 作為明年7月入職的職場新人,雖然大學裡寫了不少project,但實戰經驗匮乏,實在不是什麼牛人。所以還是笨鳥先飛,在一段非常閒適的日子裡買來了Effective C++,想進一步提升自我,在入職前打好基礎,特此邊研讀邊做筆記一份,有摘錄有總結有自己的一些理解。我知道這玩意兒基本沒什麼人觀摩,但萬一有人走過路過,望不吝賜教。
 
 
 
Start
 
聲明式(Declaration):告訴編譯器某個東西的名稱和類型,但略去細節。
 
std::size_t numDigits(int number);
 
每個函數的聲明揭示其聲明式:參數&返回類型
 
如上numDigits函數的簽名是std::size_t(int),也就是說"這函數獲得一個int 並返回一個std::size_t"。
 
 
 
定義式(Definition):提供編譯器一些聲明式所遺漏的細節。
 
定義式為對象分配內存;為function提供代碼本體,為class列出其成員(構造)。
 
class Widget {            
 
public:
 
      Widget();
 
      ~Widget();
 
... 
 
};
 
 
 
 
template<typenameT>     
 
class GraphNode{
 
public:
 
      GraphNode();
 
      ~GraphNode();
 
... 
 
};
 
 
 
 
初始化(Initialization):給予對象初值。
 
用戶自定義類型對象的初始化由構造函數執行;default構造函數要麼沒有參數,要麼每個參數都有缺省值。
 
class A {
 
public:
 
    explicit A (int x=0, bool b=true);
 
};
 
void doSth (A aObject);
 
A obj (28);  //Right,根據28創建A,第二個參數bool被缺省為true
 
doSth(28);  //Wrong,應該傳入參數A,int與A之間不能隱式轉換
 
doSth(A(28)); //Right, cast顯式轉換
 
用explicit聲明構造函數,阻止了參數隱式類型轉換的執行,但仍可進行顯式類型轉換;因此,除非有隱式轉換需要,否則構造函數被鼓勵聲明為explicit。
 
 
 
copy構造函數:以同型對象初始化自我對象,構造函數的參數為另一同類型對象;
 
copyassignment操作符:從另一個同型對象中拷貝其值到自我對象,其實就是等號賦值。
 
class Widget
 
{
 
public:
 
    Widget(); //default構造函數
 
    Widget(const Widget& rhs); //copy構造函數
 
    Widget& operator=(const Widget&rhs); //copy assignment操作符
 
    ...
 
}; 
 
Widget w1; //call the defaultconstructor
 
Widget w2(w1); //call the copyconstructor
 
w1 = w2;  //call the copy assignment operator
 
Then:
 
Widget w3 =w2;
 
先用copy構造函數創建w3,再用w2(已定義的)進行等號賦值;值傳遞就意味著調用copy構造函數。
 
 
 
STL:標准模板庫(Standard Template Library),C++標准程序庫的一部分,致力於容器(vector,list,set,map,等等),迭代器(vector<int>::iterator,set<string>::iterator,等等), 算法(for_each,find,sort,等等)。
 
 
 
不明確行為(undefined behavior):某些C++構件的行為沒有定義,無法穩定估計運行期會發生什麼。
 
int *p = 0; // p為null指針
 
std::cout << *p; //對null指針取值
 
 
 
char name[] = "Darla";// name數組大小為6(尾端為null)
 
char c = name[10]; //指向一個無效的數組索引
 
盡可能避開不明確行為。
 
摘自 pandawuwyj的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved