#include<iostream>
using namespace std;
class B
{
public:
virtual void f1() const
{
cout<<"B::f1"<<endl;
}
virtual void f2() const
{
cout<<"B::f2"<<endl;
}
};
class D: public B
{
public:
void f1() const
{
cout<<"D::f1"<<endl;
}
virtual void f3() const
{
cout<<"D::f3"<<endl;
}
};
void main()
{
D d;
//pointer and reference both can achieve polymophism
B& rb=d;
rb.f1(); //output: D::f1
rb.B::f1(); //output: B::f1
B* pb = &d;
pb->f1(); //output: D::f1
pb->B::f1(); //output: B::f1
char ch;//pause
cin>>ch;
}
Output:



If D::f1 changed to
void f1()
{
cout<<"D::f1"<<endl;
}
That is delete the const, then the result is:

This is because Constness is a part of function signature.
本文通过 C++ 代码示例展示了如何使用引用和指针实现多态性,并解释了成员函数常量性对多态调用的影响。
1552

被折叠的 条评论
为什么被折叠?



