#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
关于虚函数的继承和const对象及函数重载
最新推荐文章于 2024-07-08 11:22:09 发布