C++術語

聲明( declaration )是告訴編譯器某個東西的名稱和類型( type ),但略去細節。git

下面是聲明的例子:函數

extern int x;     //對象(object )聲明

size_t numDigits( int number );   //函數聲明( function ) 聲明

class Widget;    //類( class )聲明 

template<typename T>

class  GraphNode;         //類模版( template )聲明

 
template<typename T>

T function( T number1, T number 2);   //函數模版聲明 

 

定義( definition )是提供編譯器一些聲明所遺留的細節。spa

對象( object )而言,定義是編譯器爲此對象分配內存。code

函數( function )函數模版( function template ) 而言,定義是提供代碼本體。對象

類( class )類模版( class template )而言,定義列出他們的成員。blog

下面是定義的例子:內存

int  x;                                         //對象的定義

size_t numDigits( int number )     //函數的定義
{
  //do something
  return 1;
}
 
class Widget    //類的定義
{
  public:
    Widget();
    ~Widget();
    …
}

template< typename T >    //類模版的定義
class  GraphNode
{
 public:
    GraphNode();
   ~GraphNode();
  ….
}
 
template<typename T>
T function( T number1, T number 2)  //函數模版的定義
{
  return number1 + number2;
}

初始化( Initialization )是」給予對象初值」的過程。ci

對用戶自定義類型的對象而言,初始化由構造函數執行。默認( default )構造函數是一個可被調用而不帶任何參數,這樣的默認構造函數要麼沒有參數,要麼就是每一個參數都有缺省值。get

class  A 
{ 
public: 
    A();                 //默認構造函數 
};

class B 
{ 
public: 
    explicit B( int x=0, bool b=true );     //默認構造函數

};

class C 
{ 
public: 
    explicit C( int x );    //不是默認構造函數,是帶參數的構造函數 
};

上述的 class B 和 class C的構造函數都被聲明爲 explicit, 關於 explicit,請參考explicit淺談。它可用來阻止隱式轉換( implicit type conversions )爲了防止隱式使用拷貝構造函數,但仍能夠進行顯示類型轉換( explicit type conversions );編譯器

相關文章
相關標籤/搜索