C++ 内置或者复合类型 成员,必须自己定义构造函数来初始化……什么样的是【内置】 【复合类型】
生活随笔
收集整理的這篇文章主要介紹了
C++ 内置或者复合类型 成员,必须自己定义构造函数来初始化……什么样的是【内置】 【复合类型】
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
如題,什么是內(nèi)置,或者復(fù)合類型??如果是 一般的float,int,或者一個結(jié)構(gòu)體的引用,是不是不初始化會出問題??
新手求解。
內(nèi)置類型(built-in):像int double char這種C++基本類型
復(fù)合類型(composition):一般指包含有成員數(shù)據(jù)的自定義類型.
內(nèi)置類型不用手動初始化沒事,C++會對他們默認(rèn)初始化,
初始值可能是0(靜態(tài)對象),可能是隨機(jī)數(shù)(堆,棧對象)
引用類型或const的類型,不管是不是int還是結(jié)構(gòu)體或者類,都必須要顯式初始化.
并且編譯器不會為具有這些類型的class,struct,合成默認(rèn)構(gòu)造函數(shù).
追答
一樣的,復(fù)合類型是否一定要顯示初始化,得看復(fù)合類型里面的成員對象, 它們是否都可以默認(rèn)初始化.有一個不能默認(rèn)初始化(比如有引用成員),復(fù)合類型就不可以默認(rèn)初始化. 否則不一定就要顯式初始化.比如你的類有個string成員,你對string默認(rèn)初始化也沒事.初始化包括值初始化和默認(rèn)初始化. 當(dāng)然是將所有成員都初始化好.因為你不這么做,編譯器隱式地幫你"默認(rèn)初始化"掉了. 內(nèi)置類型(0或者隨機(jī)數(shù)), 復(fù)合類型(調(diào)用默認(rèn)構(gòu)造) 這里有個遞歸的含義在 class B { int c ; string str} ; class A {int i ; B b ; } ; i 是內(nèi)置類型, b 是復(fù)合類型. b能否默認(rèn)初始化道理和A一樣,遞歸進(jìn)B里面.追問
【1】也就是說 [內(nèi)置類型] 成員變量在構(gòu)造函數(shù)中 可以不 顯式初始化。 [復(fù)合類型] 成員變量必須顯式初始化。&和const也是一樣。【2】是不是 定義類時最好將成員全部初始化比較好?總結(jié)
以上是生活随笔為你收集整理的C++ 内置或者复合类型 成员,必须自己定义构造函数来初始化……什么样的是【内置】 【复合类型】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++中的默认初始化
- 下一篇: UEFI下用rufus安装ubuntu1