我知道C++ 11允許使用constexpr指定編譯時的表達式,而不是運行時。什麼時候應該將構造函數設置爲constexpr?
我知道這也可以爲類的構造函數完成。 但是,這個構造函數必須初始化這個類的所有成員,以便在編譯期間用作constexpr,並且它調用的任何函數也應該被標記爲constexpr。
但是什麼時候將其構造函數設置爲constexpr,並且除了輕微優化以外是否還有其他好處?
這是否意味着,如果我可以,我應該始終將我的構造函數設置爲constexpr?
我知道C++ 11允許使用constexpr指定編譯時的表達式,而不是運行時。什麼時候應該將構造函數設置爲constexpr?
我知道這也可以爲類的構造函數完成。 但是,這個構造函數必須初始化這個類的所有成員,以便在編譯期間用作constexpr,並且它調用的任何函數也應該被標記爲constexpr。
但是什麼時候將其構造函數設置爲constexpr,並且除了輕微優化以外是否還有其他好處?
這是否意味着,如果我可以,我應該始終將我的構造函數設置爲constexpr?
通過使構造函數constexpr
,您允許用戶創建constexpr
對象,並在他們自己的常量表達式中使用它們。這使得班級在某些情況下更友好。例如,在編寫嵌入式系統時,如果可能,您想將數據放入只讀存儲器。
因此,從使課程變得靈活和儘可能普遍有用的角度來看,如果可以的話,您應該這樣做。
如果類成員可以被實例化爲'constexpr',你能否只聲明一個構造函數'constexpr'? – 2014-11-14 15:09:57
@GiovanniBotta:沒錯。 – 2014-11-14 15:17:40
一個可能的con可能是使用了許多'constexpr'對象增加了編譯時間。這就是*不*說它永遠不值得。 – Snps 2014-11-14 15:06:10