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