[C/C++] C++聲明和定義的區別


·變量定義:用於為變量分配存儲空間,還可為變量指定初始值。程序中,變量有且僅有一個定義。

·變量聲明:用於向程序表明變量的類型和名字。

·定義也是聲明:當定義變量時我們聲明了它的類型和名字。

·extern關鍵字:通過使用extern關鍵字聲明變量名而不定義它。

1.定義也是聲明,extern聲明不是定義,即不分配存儲空間。extern告訴編譯器變量在其他地方定義了。

1 extern int i; //聲明,不是定義
2 int i; //聲明,也是定義 

2.如果聲明有初始化式,就被當作定義,即使前面加了extern。只有當extern聲明位於函數外部時,才可以被初始化。

1 extern double pi=3.1416;  //定義

3.函數的聲明和定義區別比較簡單,帶有{ }的就是定義,否則就是聲明

1 extern double max(double d1,double d2);  //聲明,此時extern可去掉

程序設計風格:

1. 不要把變量定義放入.h文件,這樣容易導致重復定義錯誤。

2. 盡量使用static關鍵字把變量定義限制於該源文件作用域,除非變量被設計成全局的。

3. 可以在頭文件中聲明一個變量,在用的時候包含這個頭文件就聲明了這個變量。

總結:

1.變量在使用前就要被定義或者聲明。

2.在一個程序中,變量只能定義一次,卻可以聲明多次。

3.定義分配存儲空間,而聲明不會。

注:有三個例外,以下三種實體的定義也可放到頭文件中。

1.值在編譯時就已知的const 變量的定義可以放到頭文件中

1 const int num = 10;

2.類的定義可以放到頭文件中

3.inline 函數

這三個實體可以定義在多個源文件中,只要在每個源文件中的定義相同。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM