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

詳解C++中變量的初始化規(guī)則

 更新時(shí)間:2016年08月25日 11:15:18   投稿:daisy  
這篇文章詳細(xì)介紹了關(guān)于C++中變量的初始化規(guī)則,C++如果不對變量初始化,可能會導(dǎo)致很多后果,所以學(xué)習(xí)C++變量初始化規(guī)則就很重要了,下面一起來看看

前言

定義沒有初始化式的變量時(shí),系統(tǒng)有時(shí)候會幫我們初始化變量。

系統(tǒng)如何初始化取決于變量的類型以及變量定義的位置。 

內(nèi)置類型變量是否自動(dòng)初始化取決于變量定義的位置。

函數(shù)體外定義的變量初始成0;函數(shù)體內(nèi)定義的變量不進(jìn)行自動(dòng)初始化。除了用作賦值操作的左操作數(shù),其他任何使用未初始化變量的行為都是未定義的,不要依賴未定義行為。

以int類型為例,一段簡單的測試代碼:

#include <iostream>
using namespace std;

int a;

int main()
{
 int b;

 cout << a << endl;
 cout << b << endl;

 return 0;
}

在VS執(zhí)行這段代碼,輸出變量a的值0,同時(shí)VS會報(bào)錯(cuò):Run-Time Check Failure #3 — The variable 'b' is being used without being initialized變量a被自動(dòng)初始化為0;變量b未被自動(dòng)初始化。

類類型變量在定義時(shí),如果沒有提供初始化式,則會自動(dòng)調(diào)用默認(rèn)構(gòu)造函數(shù)進(jìn)行初始化(不論變量在哪里定義)。如果某類型沒有默認(rèn)構(gòu)造函數(shù),則定義該類型對象時(shí)必須提供顯示初始化式。

一段簡單的測試代碼(默認(rèn)構(gòu)造函數(shù)由編譯器自動(dòng)生成):

#include <iostream>
using namespace std;

class testA
{
 public:
 void printf() const
 {
  cout << data << endl;
 }
 private:
 int data;
};

testA a;

int main()
{
 testA b;
 
 a.printf();
 b.printf();

 return 0;
}

在VS執(zhí)行這段代碼,得到以下結(jié)果:

編譯器自動(dòng)生成的默認(rèn)構(gòu)造函數(shù)使用與變量初始化相同的規(guī)則來初始化數(shù)據(jù)成員。對象a在函數(shù)體外定義,其int類型數(shù)據(jù)成員被初始為0;對象b在函數(shù)體內(nèi)定義,合成默認(rèn)構(gòu)造函數(shù)不會對其進(jìn)行初始化(符合內(nèi)置類型變量初始化規(guī)則),其中存放的都是隨機(jī)值。同樣,如果數(shù)據(jù)成員是類類型,則會調(diào)用相應(yīng)的默認(rèn)構(gòu)造函數(shù)對數(shù)據(jù)成員進(jìn)行初始化。

如果稍微改變一下這個(gè)類的定義,定義一個(gè)構(gòu)造函數(shù)以阻止編譯器自動(dòng)生成默認(rèn)構(gòu)造函數(shù):

#include <iostream>
using namespace std;

class testA
{
 public:
 testA(int a)
 {
  data = a;
 }

 void printf() const
 {
  cout << data << endl;
 }
 private:
 int data;
};

testA a;

int main()
{
 testA b;
 
 a.printf();
 b.printf();

 return 0;
}

這段代碼無法通過編譯:error C2512: “testA”: 沒有合適的默認(rèn)構(gòu)造函數(shù)可用。

總結(jié)

以上就是關(guān)于C++中變量的初始化規(guī)則的全部內(nèi)容,希望這篇文章的內(nèi)容對大家學(xué)習(xí)使用C++能有所幫助,如果有疑問可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • C++語法中的函數(shù)重載和默認(rèn)參數(shù)

    C++語法中的函數(shù)重載和默認(rèn)參數(shù)

    這篇文章主要介紹了C++語法中的函數(shù)重載和默認(rèn)參數(shù),本文從語法角度通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • OpenGL畫bezier曲線

    OpenGL畫bezier曲線

    這篇文章主要為大家詳細(xì)介紹了OpenGL畫bezier曲線,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C語言報(bào)錯(cuò):Buffer Overflow的原因和解決辦法

    C語言報(bào)錯(cuò):Buffer Overflow的原因和解決辦法

    Buffer Overflow是C語言中常見且危險(xiǎn)的內(nèi)存錯(cuò)誤之一,它通常在程序試圖向緩沖區(qū)(如數(shù)組或內(nèi)存塊)寫入超過其容量的數(shù)據(jù)時(shí)發(fā)生,本文將詳細(xì)介紹Buffer Overflow的產(chǎn)生原因,提供多種解決方案,需要的朋友可以參考下
    2024-07-07
  • C++實(shí)現(xiàn)日期類(Date類)的方法

    C++實(shí)現(xiàn)日期類(Date類)的方法

    下面小編就為大家?guī)硪黄狢++實(shí)現(xiàn)日期類(Date類)的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • C語言實(shí)現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用集合(HashSet)

    C語言實(shí)現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用集合(HashSet)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用集合,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++中std::priority_queue的使用小結(jié)

    C++中std::priority_queue的使用小結(jié)

    std::priority_queue是C++ STL提供的優(yōu)先隊(duì)列,本文主要介紹了C++中std::priority_queue的使用小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04
  • C語言通過gets和gets_s分別實(shí)現(xiàn)讀取含空格的字符串

    C語言通過gets和gets_s分別實(shí)現(xiàn)讀取含空格的字符串

    在遇到包含空格的字符串輸入時(shí)該如何讀取呢?如果使用scanf以%s格式去讀取輸入的字符串,遇到空格就讀取結(jié)束了,顯然這樣是讀取不了的。本文就將介紹兩個(gè)可以對含空格字符串讀取的庫函數(shù)------gets和gets_s函數(shù),感興趣的可以了解一下
    2021-12-12
  • C語言封裝函數(shù)字符串練習(xí)匯總分享

    C語言封裝函數(shù)字符串練習(xí)匯總分享

    這篇文章主要介紹了C語言封裝函數(shù)字符串練習(xí)匯總分享,分享內(nèi)容有字符串查找、字符串拼接、字符串轉(zhuǎn)整數(shù)等內(nèi)容,需要而小伙伴可以參考一下
    2022-03-03
  • C++實(shí)現(xiàn)LeetCode(28.實(shí)現(xiàn)strStr()函數(shù))

    C++實(shí)現(xiàn)LeetCode(28.實(shí)現(xiàn)strStr()函數(shù))

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(28.實(shí)現(xiàn)strStr()函數(shù)),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 一篇文章帶你了解C/C++的回調(diào)函數(shù)

    一篇文章帶你了解C/C++的回調(diào)函數(shù)

    這篇文章主要為大家介紹了C/C++的回調(diào)函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01

最新評論

仁怀市| 上林县| 兴城市| 临汾市| 上杭县| 澎湖县| 鸡西市| 武夷山市| 凉山| 溧水县| 永嘉县| 子洲县| 龙南县| 寿阳县| 白水县| 乌拉特前旗| 古交市| 万盛区| 麻城市| 峨山| 闸北区| 宁远县| 宁远县| 长汀县| 合山市| 霍山县| 浏阳市| 乌审旗| 怀安县| 长岛县| 利川市| 永德县| 灵台县| 沙雅县| 福清市| 讷河市| 东乌珠穆沁旗| 合川市| 兴和县| 阿瓦提县| 开原市|