據(jù)說(shuō)有這種面試題:
class A
{
??????? public :
??????? char get_m() const
??????? {
???????? ??????? return m;
??????? }
??????? private:
??????? char m;
}
請(qǐng)?jiān)诤瘮?shù)get_m中改變m的值。
我想,對(duì)于這種流氓問(wèn)題,只好使用流氓的做法:
??????? char get_m() const
??????? {
??????? ??????? char * p = (char *) &m;
??????? ??????? *p = 'C';
???????? ??????? return m;
??????? }
呵呵,可以做到,因?yàn)轭悆?nèi)const函數(shù)是通過(guò)“把類內(nèi)成員都作為const”來(lái)實(shí)現(xiàn)的。
不過(guò)這是我這種“流氓程序員”的做法。
實(shí)際上,經(jīng)過(guò)同事的教導(dǎo),應(yīng)該使用mutable修飾符:
mutable char m;
這樣即使在類的const函數(shù)內(nèi),m的類型也是可以改變的了。
另外,如果想不要這份工作,也可以這么寫(xiě):
#define const
哈哈,這樣面試官就不敢要你啦。:D