您的位置:首页 > 其它

关于虚函数的继承和const对象及函数重载

2014-03-31 09:49 302 查看
#include <iostream>

using namespace std;
struct B
{
int i;

virtual const B& f() const
{
cout<<"2";
return *this;
}
virtual int f()
{
cout<<"1";
return 1;
}
int g()
{
cout<<"3";
return 3;
}
};
struct D: B
{
int i;
int f()
{
cout<<"4";
return 4;
}
const B& f() const
{
cout<<"5";
return *this;
}
int f(int = 0)
{
cout<<"6";
return 6;
}
virtual int g()
{
cout<<"7";
return 7;
}
};
int main()
{
D d;
const D d_const;
B b,*p = &d;
const B* p_const = &d_const;
b.f();//优先调用非const函数
p->f();//f为虚函数,p由d赋值,执行派生类的f函数
p->g();//B中g函数不是虚函数,调用基类的g函数
p_const->f();//const对象只能调用const函数
d_const.f();
return 0;
}
输出为:14355
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐