c++ 中一些有趣的現(xiàn)象

大家好,今天跟大家分享一些C++中有趣的現(xiàn)象,其中有的很可能被面試官當(dāng)作面試題。
現(xiàn)象一
問(wèn)題:m等于多少?
現(xiàn)象二
問(wèn)題:最后打印出的m的值是多少?
現(xiàn)象三
問(wèn)題:最后打印出的m的值是多少?
答案分別是1,1,1。
對(duì)于現(xiàn)象一,C++標(biāo)準(zhǔn)委員會(huì)規(guī)定空類占一個(gè)字節(jié),用以保證每個(gè)實(shí)例在內(nèi)存中都有獨(dú)一無(wú)二的地址。舉例說(shuō)明:
對(duì)于現(xiàn)象二和現(xiàn)象三,因?yàn)閟izeof 和 decltype是編譯時(shí)求值關(guān)鍵字,而 m++ 屬于運(yùn)行時(shí)表達(dá)式,且sizeof (m++) 以及 decltype (m++) 從語(yǔ)法上講都是合法的,所以筆者猜C++標(biāo)準(zhǔn)委員會(huì)保留了編譯期的表達(dá)式求值而舍棄了運(yùn)行時(shí)的表達(dá)式求值。
水平有限,歡迎交流指正。