基类成员函数调用的虚函数是本基类的,还是子类的?
classBaseA{disp(){check();};virtualvoidcheck(){};}classB:publicBaseA{check(){cout<<"B...
class BaseA {
disp() { check();};
virtual void check() { };
}
class B: public BaseA {
check() { cout << "B :: check()"};
}
在BaseA中的disp()中调用check()时,调用的是基类还是子类的呢?为什么?
实在有点迷糊。。
这是为什么呢?想不通为什么调用的不是基类的。。 展开
disp() { check();};
virtual void check() { };
}
class B: public BaseA {
check() { cout << "B :: check()"};
}
在BaseA中的disp()中调用check()时,调用的是基类还是子类的呢?为什么?
实在有点迷糊。。
这是为什么呢?想不通为什么调用的不是基类的。。 展开
展开全部
因为check()是虚函数所以BaseA的对象调用dish()时调用的是基类的check();而B类的对象调用dish()时调用的是子类(即B类自身)的check()
#include<iostream>
#include<string>
using namespace std;
class BaseA {
public:
void disp(){check();}
virtual void check() {cout<<"A::check()"<<endl; }
};
class B: public BaseA {
public:
void check() { cout << "B :: check()"<<endl;};
};
int main()
{
BaseA a;
B b;
a.disp();//A::check()
a.check();//A::check()
b.disp();//B::check()
b.check();//B::check()
return 0;
#include<iostream>
#include<string>
using namespace std;
class BaseA {
public:
void disp(){check();}
virtual void check() {cout<<"A::check()"<<endl; }
};
class B: public BaseA {
public:
void check() { cout << "B :: check()"<<endl;};
};
int main()
{
BaseA a;
B b;
a.disp();//A::check()
a.check();//A::check()
b.disp();//B::check()
b.check();//B::check()
return 0;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询