C++ primer 第15章 面向对象程序设计
作者:互联网
-
构造函数为什么不能是虚函数?
new一个对象1.开辟内存空间 2.编译器调用构造函数进行初始化,也就是实例化。在调用构造函数的时候,已经有了内存,只是没有实例化,而如果构造函数是虚的,就是说通过vtable来调用构造函数,但是此时是一片raw memory,根本找不到对象的vptr来指向vtable,所以这才是构造函数不能是虚的原因。另外补充一下,每个类有一个vtable,每个对象有一个vptr指向vtable,new多个对象的时候,进程地址空间只会保留一个vtable,所有对象共享一个vtable。 -
静态变量或静态函数会被继承吗?
其会被继承,但是其在子类中的访问权限视情况而定(遵循通用的 访问控制规则),并且其是共享的,即该继承体系中共享同一静态变量或静态函数。
标签:调用,vtable,静态,C++,对象,15,共享,primer,构造函数 来源: https://blog.csdn.net/qq_34600424/article/details/112383685