经典指数          
原因
2336
浏览数
0
收藏数
 

如果类B继承类A,A::x()被声明为虚函数,B::x()重载了A::x()方法,在下述语句中哪个x()方法会被调用:
B b;
b.x();
  • A::x()
  • B::x()
  • A::x() B::x()
  • B::x() A::x()

     举报   纠错  
 
切换
1 个答案

答案B:B::x() 题目中没有说明A,B的关系,这里按题目的意思应该理解为B继承A。

因为在主函数中定义的是B的实例化对象,则,无论在B中是覆盖还是重载A的虚函数x都将调用类B中的函数。

#include

using namespace std;

class A{

public:

 virtual void x(int x)

 {

  cout<<"A::x() "<

 }

};

class B{

public:

 virtual void x(int x)

 {

  cout<<"B::x() "<

 }

 virtual void x(int x, float y)

 {

  cout<<"B::x() "<

 }

};

int main()

{

 B b;

 b.x(1,0.5);

 return 0;

}

 
切换
撰写答案