为什么构造函数不能是虚函数,析构函数往往是虚函数? 静态存储区.无论在那里构建,其过程都是两步:首先,分配一块内存:其次,调用构造函数.好,问题来了,如果构造函数是虚函数,那么就需要通过vtable 来 调用,但此时面对一块 raw memeory,到哪里去找 vtable 呢?毕竟,vtable 是在构造函数中才初始化的啊,而不是在其之前.因此构造函数不能为虚函数. 析构函数可以是虚函数,且常常如此,这个就好理解了,因为此时 vtable 已经初始化了:况且我们通常通过基类的指针来销毁对象,如…