最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

區(qū)分c++中的聲明與定義

 更新時間:2020年08月30日 16:46:45   作者:Dabelv  
這篇文章主要介紹了如何區(qū)分c++中的聲明與定義,幫助大家更好的理解和學習c++,感興趣的朋友可以了解下

C++編碼過程中,我們經(jīng)常談及“定義”和“聲明”,二者是編程過程中的基本概念。我們需要使用一個變量、類型(類、結構體、枚舉、共用體)或者函數(shù)時,我們需要提前定義和聲明。定義和聲明的過程,就像我們向圖書館借閱書籍一般,需要先完成書籍的印刷,即創(chuàng)造出書籍,這是一個定義的過程,有了書籍,我們需要到圖書館完成借閱的登記手續(xù),這是申明的過程。完成了申明,我們有了使用書籍的權限,就可以盡情的暢游在知識的海洋。如果說書籍是自己委托印刷廠印刷的,那么你無需向他人借閱,即無需聲明,可以直接使用書籍。一本書籍只需要印刷一次,但是可以被多人多次借閱,也就是說定義只需要一次,但是聲明可以有多次。這里的書籍指代的是“定義”和“聲明”作用的對象,即變量、類型和函數(shù)。C/C++中,使用一個變量、類型或者函數(shù)必須先在使用前完成定義和聲明。

定義和聲明是容易混淆的概念,但通過上面的類比說明,可以看出:
(1)“定義”和“聲明”的本質(zhì)區(qū)別是聲明可以出現(xiàn)多次,而定義只能出現(xiàn)一次;
(2)把聲明的東西放在頭文件,把定義的東西放在源文件(.c或者.cpp文件);
(3)類型的定義應該放在頭文件,因為類型不具有外部連接性,不同源文件擁有相同的類型定義不會報編譯錯誤,但頭文件不能重復包含。

1.變量的定義與聲明

定義變量,指明變量所屬類型、名稱、分配內(nèi)存空間與初始化其初始值,如

int a=1;
int a(1);

如果不顯示初始化,則按照編譯器默認進行初始化。

聲明變量,指明變量所屬類型與變量名稱,如:

extern int a;

有一點需要注意,對于局部變量以及全局靜態(tài)變量是不能通過extern進行前置申明的,即不能在定義之前通過聲明來引用,因為局部變量的作用域是當前代碼塊,全局靜態(tài)變量的作用域是當前源文件,都不是全局作用域,所以不能通過extern進行前置聲明。全局變量允許在定義之前通過前置聲明進行引用。參見如下代碼片段。

#include <stdio.h>

extern int a;
extern static int b; //報錯
int main()
{
 extern int c; //報錯
 printf("a=%d,b=%d,c=%d",a,b,c);
 int c=2;
}
int a=0;
static int b=1;

2.類型的定義與聲明

定義類型,指明類型的名稱和內(nèi)容。

struct test{int a;}

或者給已經(jīng)存在的類型起個別名。

typedef int int32;

注意,類型的作用域是源文件,即類型不具有外部連接性質(zhì),因此可以在不同源文件定義相同名稱的類型,比如定義同名的類是不會報重定義錯誤的,這也說明了類型的定義應該放在頭文件中,但在同一個源文件定義相同名稱的類型則編譯器會報重定義錯誤。

聲明類型,只給出類型的名稱。

class A;

類型被聲明之后,可以用于聲明其他的標識符,但不能利用它來定義對象,也不能使用類型的成員。

class A;  //先聲明類
void show(A& a); //申明函數(shù)
class A  //后定義
{
public:
 int a;
 char b;
};

以上代碼沒有錯誤。但如下代碼將報錯:

class A; //先聲明
int main(int argc,char* argv[])
{
 A classA;
 classA.a=5;
 return 0;
}

class A //后定義
{
public:
 int a;
 char b;
};

該程序無法通過編譯,原因是類A的所有成員的有效范圍均是從定義類的地方開始,故使用未知的構造函數(shù)初始化其成員變量是錯誤的,會報使用未定義的 class “A”錯誤。

使用類型之前給出其定義式即可,即給出類型的名稱和內(nèi)容,或者利用typedef給一個類型起個別稱。雖然說是定義類型,但還是將類型的定義放在頭文件,即使被不同的源文件包含,因為類型不具有外部連接特性,所以不會報重定義錯誤的,這和變量和函數(shù)不同,不能將變量和函數(shù)的定義放在頭文件!切記!這里所說的外部連接與內(nèi)部連接的區(qū)別在于鏈接器接的時候是否將當前目標文件中的定義與其它目標文件對比,并報告是否有重定義錯誤。內(nèi)連接不會進行對比,故不同源文件中定義相同名稱的類型是不會報錯的。

3.函數(shù)的定義與聲明

定義函數(shù),指明函數(shù)返回類型、函數(shù)名稱、函數(shù)參數(shù)和函數(shù)體。

int test(char a,int b)
{
 return a+b
}

聲明函數(shù),指明函數(shù)返回類型,函數(shù)名稱和函數(shù)參數(shù)。

int test(char a,int b);
//或者無需給出形參名稱,只需要類型即可
int test(char,int);

從上面可以看出,函數(shù)定義與函數(shù)聲明的區(qū)別是主要有兩點:
(1)函數(shù)定義需要給出函數(shù)體,即函數(shù)的具體實現(xiàn),函數(shù)聲明不需要;
(2)函數(shù)定義必須給出形參名稱,聲明可以只給出形參類型。

以上就是區(qū)分c++中的聲明與定義的詳細內(nèi)容,更多關于c++ 聲明與定義的資料請關注腳本之家其它相關文章!

相關文章

  • C++11中內(nèi)聯(lián)函數(shù)(inline)用法實例

    C++11中內(nèi)聯(lián)函數(shù)(inline)用法實例

    內(nèi)聯(lián)函數(shù)本質(zhì)還是一個函數(shù),但在聲明的時候,函數(shù)體要和聲明結合在一起,否則編譯器將它作為普通函數(shù)來對待,下面這篇文章主要給大家介紹了關于C++11中內(nèi)聯(lián)函數(shù)(inline)的相關資料,需要的朋友可以參考下
    2022-10-10
  • Qt實現(xiàn)獲取文件大小與磁盤空間大小

    Qt實現(xiàn)獲取文件大小與磁盤空間大小

    這篇文章主要為大家詳細介紹了如何使用Qt實現(xiàn)獲取文件大小與磁盤空間大小,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • C語言中bool和float的用法實例解析

    C語言中bool和float的用法實例解析

    這篇文章主要介紹了C語言中bool類型和float類型的相關資料,bool類型用于聲明布爾變量,只有true和false兩種值,float類型用于存儲單精度浮點數(shù),文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-11-11
  • 簡明的C++函數(shù)指針學習教程

    簡明的C++函數(shù)指針學習教程

    這篇文章主要介紹了C++函數(shù)指針的學習教程,講到了函數(shù)指針的定義及把指針作為函數(shù)參數(shù)進行傳遞的用法,需要的朋友可以參考下
    2016-04-04
  • C++ OpenCV單峰三角閾值法Thresh_Unimodal詳解

    C++ OpenCV單峰三角閾值法Thresh_Unimodal詳解

    本文主要介紹了適合當圖像的直方圖具有明顯單峰特征時使用,結合了三角法的原理而設計的圖像分割方法,感興趣的小伙伴可以了解一下
    2021-12-12
  • C語言實現(xiàn)三子棋

    C語言實現(xiàn)三子棋

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)三子棋,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 基于c語言知識點的補遺介紹

    基于c語言知識點的補遺介紹

    本篇文章是對c語言知識點的一些補遺進行詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++中volatile和mutable關鍵字用法詳解

    C++中volatile和mutable關鍵字用法詳解

    這篇文章主要介紹了C++中volatile和mutable關鍵字用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • C++中的強制類型轉(zhuǎn)換操作詳解

    C++中的強制類型轉(zhuǎn)換操作詳解

    C++中提供了四種強制類型轉(zhuǎn)換技術:static_cast、dynamic_cast、reinterpret_cast和const_cast。這些技術能夠在需要時將一種類型轉(zhuǎn)換為另一種類型,但需要注意它們的適用條件和安全性。程序員需要根據(jù)具體情況選擇合適的強制類型轉(zhuǎn)換方式,以確保程序的正確性和可靠性
    2023-04-04
  • 用C編寫一個送給女朋友的情人節(jié)小程序 可愛!

    用C編寫一個送給女朋友的情人節(jié)小程序 可愛!

    非常可愛的情人節(jié)小程序!文章為大家分享了用C編寫一個送給女朋友的小程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02

最新評論

藁城市| 洪雅县| 晋城| 绍兴市| 金川县| 柯坪县| 三原县| 芦山县| 同仁县| 镇赉县| 迁西县| 牡丹江市| 乌苏市| 岗巴县| 乐至县| 宣化县| 彩票| 岳普湖县| 永寿县| 邵东县| 贵港市| 宾川县| 天津市| 耿马| 壶关县| 五莲县| 东兴市| 怀远县| 大竹县| 宜良县| 南开区| 昌宁县| 内乡县| 从化市| 双鸭山市| 读书| 揭东县| 保定市| 平凉市| 马尔康县| 宿松县|