欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

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

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

前言

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

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

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

函數(shù)體外定義的變量初始成0;函數(shù)體內(nèi)定義的變量不進(jìn)行自動初始化。除了用作賦值操作的左操作數(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,同時VS會報錯:Run-Time Check Failure #3 — The variable 'b' is being used without being initialized。 變量a被自動初始化為0;變量b未被自動初始化。

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

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

#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é)果:

編譯器自動生成的默認(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òu)造函數(shù)以阻止編譯器自動生成默認(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++能有所幫助,如果有疑問可以留言交流,謝謝大家對我們的支持。

上一篇:全面了解#pragma once與 #ifndef的區(qū)別

欄    目:C語言

下一篇:概述C++中的 public protected private friend關(guān)鍵字的用法

本文標(biāo)題:詳解C++中變量的初始化規(guī)則

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2067.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有