正常情况下,是可以使用metset初始化类对象的,但是如果该类含有虚函数,那么这个对象本身指向虚函数表的指针也会被初始化为null,从而找不到该类的虚函数表,当我们想要利用该类发生多态时,程序崩溃,看例子。
class Animal {
public:
virtual void walking() {
cout << "animal walking" << endl;
}
void speak() {
cout << "animal speaking" << endl;
}
};
class People :public Animal {
public:
virtual void walking() {
cout << "people walking" << endl;
}
void speak() {
cout << "people speaking" << endl;
}
};
void demo() {
People p;
memset(&p, 0, sizeof(People));
Animal *a = &p;
a->speak(); //speak()不是虚函数 不影响
a->walking(); //程序直接崩溃
}
int main(){
demo();
return 0;
}