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