读书人

子类中的const虚函数,该如何解决

发布时间: 2012-02-15 12:09:44 作者: rapoo

子类中的const虚函数
代码如下 :
class base
{
public:
virtual void mytest(){cout < < "base::mytest " < <endl;}
};


class son :
public base
{
public:
virtual void mytest()
{
cout < < "son::mytest " < <endl;
}
};

int _tmain(int argc, _TCHAR* argv[])
{
base *pmybase = new base;
son myson;

pmybase-> mytest();
pmybase = &myson;
pmybase-> mytest();
return 0;
}

程序输出是 base::mytest
son::mytest
但是如果把son的mytest函数加上const 以后

virtual void mytest() const
{
cout < < "son::mytest " < <endl;
}

程序输出就变成两个base::mytest了;
怎么会这样?
我做过实验 定义一个非const对象 然后让他调用const的函数 是可以的
也就是说非const对象可以调用const函数



[解决办法]
const是函数类型的一部分。虚函数重载的时候这个const也必须一致。
[解决办法]
靠,回答这么快啊,呵呵

读书人网 >C++

热点推荐