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