子类中的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也必须一致。
[解决办法]
靠,回答这么快啊,呵呵