编程语言
首页 > 编程语言> > C++ primer 第15章 面向对象程序设计

C++ primer 第15章 面向对象程序设计

作者:互联网

  1. 构造函数为什么不能是虚函数?
    new一个对象1.开辟内存空间 2.编译器调用构造函数进行初始化,也就是实例化。在调用构造函数的时候,已经有了内存,只是没有实例化,而如果构造函数是虚的,就是说通过vtable来调用构造函数,但是此时是一片raw memory,根本找不到对象的vptr来指向vtable,所以这才是构造函数不能是虚的原因。另外补充一下,每个类有一个vtable,每个对象有一个vptr指向vtable,new多个对象的时候,进程地址空间只会保留一个vtable,所有对象共享一个vtable。

  2. 静态变量或静态函数会被继承吗?
    其会被继承,但是其在子类中的访问权限视情况而定(遵循通用的 访问控制规则),并且其是共享的,即该继承体系中共享同一静态变量或静态函数。

标签:调用,vtable,静态,C++,对象,15,共享,primer,构造函数
来源: https://blog.csdn.net/qq_34600424/article/details/112383685