virtual的传递
子类继承了父类的virtual函数,孙子类继承了子类的这个函数,那么孙子类就继承了virtual。
看代码:
class base {
public:
base() = default;
virtual ~base() = default;
virtual void foo(int (&)[4])
{
printf("base..\n");
}
};
class son : public base {
public:
son() = default;
~son() = default;
void foo(int (&)[4]) // 可加virtual也可不加
{
printf("son..\n");
}
};
class sun : public son {
public:
sun() = default;
~sun() = default;
void foo(int (&)[4])
{
printf("sun...\n");
}
};
int main()
{
int msg[4] = { 1, 2 , 3, 4 };
base *pb = new sun();
pb->foo(msg);
return 0;
}
输出:
sun...

浙公网安备 33010602011771号