旅途

如果想飞得高,就该把地平线忘掉

关于C++类内const函数

据说有这种面试题:
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

posted on 2007-10-29 02:52 旅途 阅读(985) 评论(2)  编辑 收藏 引用 所属分类: C/C++

Feedback

# re: 关于C++类内const函数 2008-08-20 10:33 Kasmile

请在函数get_m中改变m的值。
//是否说明不能在去更改 char m;的声明呢?

char * p = (char *) &m;
*p = 'C';
return m;
是够流氓哈~

char &p = (char)m;
p = 'c';
return m;

也差不多...  回复  更多评论   

# re: 关于C++类内const函数 2008-10-14 16:57 d

受教  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理