C++确定对象被使用前已先被初始化
生活随笔
收集整理的這篇文章主要介紹了
C++确定对象被使用前已先被初始化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
確定對象被使用前已先被初始化
- 讀取未初始化對象的后果
- 按對象的類型劃分
- 按對象的作用域與生命周期劃分
讀取未初始化對象的后果
讀取未被初始化的值會導致不明確的行為。在某些平臺上,僅僅只是讀取未初始化的值就可能讓程序終止,更可能的情況是讀入一些“半隨機”bits,污染了正在進行讀取動作的那個對象,最終導致不可預知的程序行為,以及許多令人不愉快的調試過程
按對象的類型劃分
?對于內置類型的對象:永遠在使用前初始化
?類類型的對象:初始化責任落在構造函數身上
–效率上的問題:
?類類型成員的初始化動作發生在構造函數本體之前。比起先調用default構造函數然后再調用copy assignment操作符,單只調用一次copy構造函數比較高效。因此,善用初始化列表有助于提升效率
?內置類型成員的初始化不一定發生在賦值動作的的時間點之前 。對于內置類型成員,一般為了保持一致也在初始化列表中給出初始值
–初始化順序:成員的初始化順序與類內聲明順序相同
按對象的作用域與生命周期劃分
static對象
–non-local static對象:C++對“定義于不同的編譯單元內的non-local static對象”的初始化相對次序并無明確定義
global對象
定義于namespace作用域內的對象
cl
總結
以上是生活随笔為你收集整理的C++确定对象被使用前已先被初始化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++别让异常逃离析构函数
- 下一篇: C++尽可能使用const