1. 程式人生 > >C++中的宣告和定義

C++中的宣告和定義

1、變數的宣告和定義
變數的宣告有兩種情況:
(1)需要建立儲存空間
例如:int a。在宣告時就建立了儲存空間。也稱為定義性宣告,即我們所說的“定義”。
(2)不需要建立儲存空間,只是告訴編譯器某變數已經在別處定義過了。
例如:extern int a。其中變數a已在別處了。這種即是我們所說的“宣告”。

總結:
int a;//定義性宣告,分配儲存空間,初值不確定。
int b = 0;//定義性宣告,分配儲存空間,並賦初值。
extern int c;//引用性宣告,不分配儲存空間,只告訴編譯器變數已經在別處定義“

2、函式的宣告和定義
有函式體的即為定義,不帶函式體為宣告
例:

double sqrt(double x);//宣告;

doublue sqrt(double x)
{
return x*x;
}//有函式體即定義。

3、類的定義和宣告
1.類的宣告就是告訴編譯器有這麼一個類,它的名字是XXX,它具有哪些成員函式,哪些成員變數。(宣告類,不僅沒有為成員分配空間,也沒有為成員函式分配空間。)

2.通過物件呼叫成員函式,在連結的時候才知道入口地址。

3.類的static成員變數,在類的宣告出並沒有定義。必須在類定義的地方,定義類的static成員變數否則會處相連線錯誤。程式碼如下:

class Myclass
{
private:
    int a , b , c;
    static
int sum; //宣告靜態資料成員 public: Myclass(int a , int b , int c); void GetSum(); }; int Myclass::sum = 0; //定義並初始化靜態資料成員 //以上屬於在面向物件程式設計的應用 //面向過程程式設計的應用 #include<iostream> using namespace std; static void fn(); //宣告靜態函式 int main(void) { fn(); return 0; } void fn() //定義靜態函式
{ int n = 10; cout<<n<<endl; }

4、定義與宣告的區別
(1)是否需要分配儲存空間。
(2)在一個作用域中可以重複宣告,但不能重複定義。

相關推薦

為什麼C++宣告定義要分開寫

       現在開始寫專案了,你會發現我們一般都要寫一個cpp,對應的還得有一個h檔案,那麼為什麼在C++中我們要這麼做?.h就是宣告,.cpp就是實現,而所謂分離式實現就是指“宣告”和“定義”分別

C語言宣告定義詳解

變數宣告和變數定義 變數定義:用於為變數分配儲存空間,還可為變數指定初始值。程式中,變數有且僅有一個定義。 變數宣告:用於向程式表明變數的型別和名字。 定義也是宣告,extern宣告不是定義 定義也是宣告:當定義變數時我們聲明瞭它的型別和

C++模板宣告定義是否可以分開存放在.h.cpp檔案

        雖然我們遇到的絕大多數情況下,模板中函式的宣告和定義都放在標頭檔案中,但我想肯定有人和我一樣,想知道是否可以分開存放。動手實驗後,會發現有的可以,有的會報錯,其實,這和編譯器有關。         要弄清楚這個問題,首先要解決兩個問題。         第一

C語言宣告定義的區別——分析extern關鍵詞。

一直很迷惑C語言中的宣告和定義的有些實踐中的用法,說迷惑實踐是因為宣告和定義的概念上的區別是很明確的。 定義和宣告的區別(主要針對變數): 定義是要為變數分配儲存空間,還可以在定義的時候為變數指定初始值。在一個程式中,變數有且僅有一次定義。 宣告用於向程式表明變數的型別和名

C\C++宣告定義的區別

C語言是面向過程的,而C++是面向物件的 C和C++的區別: C是一個結構化語言,它的重點在於演算法和資料結構。C程式的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。 C++,首要考慮的是如何構造一個物件模型,讓這

c+++變數宣告定義

    c++變數宣告和定義的關係動機:    為了把程式拆分成多個邏輯部分,c++支援分離式編譯,該機制可以將程式分割成若干個檔案,每個檔案可被獨立編譯。為了支援分離式編譯,c++將宣告(declaration)和定義(definition)區分開。宣告:宣告使得為程式所知

C++帶有預設引數的宣告定義。Qt重寫預設建構函式。C++函式呼叫時實參個數函式定義時的形參個數不一致時的處理。

1、Qt中自動生成的建構函式 (1)Qt中自動生成的建構函式的宣告 class Chat : public QWidget { Q_OBJECT public: explicit Chat(QWidget *parent = 0); //宣告建構函式,可以帶有初始值“=0”

C++的全域性變數宣告定義

1.全域性變數 全域性變數在整個原始檔的作用域都是有效的,只需要在一個原始檔中定義全域性變數,在其他不包含全域性變數定義的原始檔中用extern關鍵字再次宣告這個全域性變數即可。 也可以在一個原始檔中定義這個全域性變數,在標頭檔案中用extern關鍵字再次宣告這個全域性變數,如果其它原始檔要

C+++宣告定義

《C++Primer》第四版 2.3.5節中這麼說到: ①變數定義:用於為變數分配儲存空間,還可為變數指定初始值。程式中,變數有且僅有一個定義。 ②變數宣告:用於向程式表明變數的型別和名字。 ③定義也是宣告:當定義變數時我們聲明瞭它的型別和名字。 ④extern

c++利用巨集來宣告定義變數

假設我們要定義一個配置類,類中包含了很多的配置成員,有一種通過巨集的方法可以讓我們方便的維護繁多的成員 在一個類中,定義一個變數需要型別,建構函式中給出的初始值。我們需要能夠像指令碼語言一樣進行配置變數: tconfig.h OPTION(m_data,OPT_INT,-1) OPTION(m_value

C語言宣告定義初始化的區別

函式和變數(全域性變數)都有宣告和定義, 對於函式而言: 同一檔案內,如果函式fun_1呼叫fun_2時,如果fun_2在fun_1之後定義,則需在fun_1之前對fun_2進行宣告,如下: void fun_2();// 宣告 void fun_1() { ... fu

C++類模板的友元函式的宣告定義分別放在哪裡

        前面提到了模板的宣告和定義推薦都放在標頭檔案中,那麼該類中的友元函式的宣告和定義該放在哪裡呢?         因為友元函式並不屬於這個類, 按照習慣,我們一般把宣告放在類中,而把定義放在類的外面。但對於類模板來說,這樣就出問題了。很多編譯器並不支援將友元函

C語言變數的宣告定義

變數宣告和變數定義變數定義:用於為變數分配儲存空間,還可為變數指定初始值。程式中,變數有且僅有一個定義。變數宣告:用於向程式表明變數的型別和名字。定義也是宣告,extern宣告不是定義定義也是宣告:當定義變數時我們聲明瞭它的型別和名字。extern宣告不是定義:通過使用ext

C++宣告定義

1、變數的宣告和定義 變數的宣告有兩種情況: (1)需要建立儲存空間; 例如:int a。在宣告時就建立了儲存空間。也稱為定義性宣告,即我們所說的“定義”。 (2)不需要建立儲存空間,只是告訴編譯器某變數已經在別處定義過了。 例如:extern int

變數宣告定義的區別||變數儲存類別小結(C程式設計的內容)

我們在程式設計中,時時刻刻都用到變數的定義和變數的宣告,可有些時候我們對這個概念不是很清楚,知道它是怎麼用,但卻不知是怎麼一會事,下面我就簡單的把他們的區別介紹如下: 變數的宣告有兩種情況:

c#的自定義泛型類、泛型方法泛型接口

泛型方法 return bsp 其中 tel sts code 方式 void ? 泛型的產生其中一個原因就是為了解決原來集合類中元素的裝箱和拆箱問題: 一、泛型類: /// <summary> /// 返回前臺的消息 /// &

error LNK2005 --類的宣告定義放在一個檔案

刷C++primer的時候,將類的宣告和定義均放在標頭檔案中,報錯error LNK2005 1> Sales_data.h 1>Sales_data.obj : error LNK2005: "public: class Sales_data & __this

C++structclass定義類的區別

C++中的struct對C中的struct進行了擴充,它已經不再只是一個包含不同資料型別的資料結構了,它已經獲取了太多的功能。struct能包含成員函式嗎? 能! struct能繼承嗎? 能!! struct能實現多型嗎? 能!!!  既然這些它都能實現,那它和clas

C++ 類靜態成員變數宣告定義

C++悠悠然 君不見黃河之水天上來,東流到海不復回 //1)在靜態記憶體區中 //2)所有類物件共用這一個變數,只有唯一一個 //3)必須在類外面顯示定義,顯示定義的時候不加static //4)可以通過類物件訪問,也可以通過類名加作用域訪問 #includ

C++變數的宣告定義 終於搞明白了

1.變數的定義:變數的定義用於為變數分配儲存空間,還可以為變數指定初始值。在一個程式中,變數有且僅有一個定義。 2.變數的宣告:用於向程式表明變數的型別和名字。程式中變數可以宣告多次,但只能定義一次。 3.兩者聯絡與區別: (1)定義也是宣告,因為當定義變數時我們也向程式表