Effective C++ 1.0 -- 概述
生活随笔
收集整理的這篇文章主要介紹了
Effective C++ 1.0 -- 概述
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
聲明
對象聲明,函數聲明,類型聲明,是告訴編譯器某個東西的 名稱和類型,但是略去了實現 細節,因為定義在其他的地方。
external int x; //對象(object)聲明
std:size_t numDigits(int number) //函數 聲明
class Widget; //類(class)聲明
template<class T>
class GraphNode; //模板類的聲明
定義
是編譯器為該對象撥發內存空間
類的三個默認成員函數
構造函數
default構造函數:是一個可被調用而不用傳遞任何參數的構造函數。
不用傳遞參數可能存在兩個情況,第一種是函數沒有參數,第二種是函數的參數都有缺省值。
我們建議把函數定義為explicit的,比如
class A
{
public:explicit A(int x = 0,bool b = true);
};
使用上面的關鍵字可以防止他們被執行隱式的類型轉換,但是他們可以用來顯示的類型轉換。這樣做可以防止編譯器進行 隱式的類型轉換。
拷貝構造函數和復制運算符的重載
注意拷貝構造函數和賦值運算符重載的時候的參數和返回值,盡量使用const和&
class Widget
{
public:Widget(); //default構造函數Widget(const Widget& rhs);Widget& operator=(const Widget& rhs);
}
不確定行為(未定義行為)
未定義行為的結果是不可預期的,一般的情況就是訪問一個未定義的空間,可能 會出現以下的一些情況
- 訪問成功,雖然該空間是未定義的,比如訪問越界了,但是這個空間可能被其他的語句定義出來了,而這個時候和我的類型匹配,這個時候雖然是不當的,但是可以訪問
- 訪問失敗,空間沒有被 定義出來
- 訪問失敗,空間雖然被定義出來了,但是被其他的資源占用了,并且權限不被我們使用,所以不可用
TR1和Boost
TR1
TR1(”Technical Report 1”),是一個規范,描述加入C++的諸多的新機能。
Boost
Boost是一個網站也是一個開放源碼的C++程序庫。TR1的很多機能是以Boost為基礎的,很多C++11的標準實際是參考了Boost。
總結
以上是生活随笔為你收集整理的Effective C++ 1.0 -- 概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1+1=?
- 下一篇: 继承和多态 1.0 -- 继承概念(is