65,211
社区成员
发帖
与我相关
我的任务
分享
因为B累继承了A的timerEvent,而这个函数 实际是
void A::timerEvent()
{
this->func();
}
当用b去调用时this是B*所以调用的是B类的func().
class A
{
public:
virtual void func();
void timerEvent(); //定时器函数,这个函数在对象产生后被调用
}
void A::timerEvent()
{
func;
}
class B : public A
{
public:
virtual void func();
}
int main()
{
B b;
b.timerEvent();//直接调用了啊,
}
#include <iostream>
using namespace std;
class A
{
public:
virtual void func(){cout<<"A::func()";}
void timerEvent(); //定时器函数,这个函数在对象产生后被调用
};
void A::timerEvent()
{
cout<<"A::timerEvent()"<<endl;
this->func(); //...
}
class B : public A
{
public:
virtual void func(){cout<<"B::func()";}
};
int main()
{
B b;
b.timerEvent();
//这个时候希望定时器函数调用的是B类的func()函数
return 0;
}
//输出:A::timerEvent()
// B::func()
int main()
{
SetEvent();
B b;
//这个时候A类的构造函数被调用了,A对象存在了,系统自动触发了A类的timerEvent()函数,从而触发func()函数,
//这个时候我希望调用的是B类的func()函数
ResetEvent();
}