请选择下列程序的执行结果()
#include<iostream> using namespace std; class A{ public: void f(){ cout<<"A::f()"; } }; class B: public A{ public: void f(){ cout<<"B::f()"; }; }; int main(){ B b; b.f(); }
A::f();B::f() 都不可能
A::f();B::f() 都有可能
A::f()
B::f()
在程序中,类B继承自类A,并重写了f()方法。在main()函数中,创建了一个B类的对象b,并调用了它的f()方法。
由于B类重写了f()方法,因此在调用b.f()时,会优先调用B类的f()方法。因此,程序的输出为B::f()。
需要注意的是,在 C++ 中,方法可以通过关键字virtual声明为虚函数,从而实现运行时多态性。如果将A类和B类的f()方法都声明为虚函数,并且在main()函数中使用指针来调用f()方法,则程序的输出将会是B::f()。
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题