-
构造函数为什么不能是虚函数?
new一个对象1.开辟内存空间 2.编译器调用构造函数进行初始化,也就是实例化。在调用构造函数的时候,已经有了内存,只是没有实例化,而如果构造函数是虚的,就是说通过vtable来调用构造函数,但是此时是一片raw memory,根本找不到对象的vptr来指向vtable,所以这才是构造函数不能是虚的原因。另外补充一下,每个类有一个vtable,每个对象有一个vptr指向vtable,new多个对象的时候,进程地址空间只会保留一个vtable,所有对象共享一个vtable。 -
静态变量或静态函数会被继承吗?
其会被继承,但是其在子类中的访问权限视情况而定(遵循通用的 访问控制规则),并且其是共享的,即该继承体系*享同一静态变量或静态函数。
相关文章
- 01-23C++ Primer 学习笔记_67_面向对象编程 --转换与继承、复制控制与继承
- 01-23面向对象程序设计-C++ Inheritance & Multiple inheritance & RTTI【第十三次上课笔记】
- 01-23C++面向对象程序设计的一些知识点(1)
- 01-23《C++ Primer》笔记 第15章 面向对象程序设计
- 01-23c++primer笔记十五、面向对象程序设计
- 01-23C++ primer 第15章 面向对象程序设计
- 01-23C++ Primer 学习笔记_69_面向对象编程 --继承情况下的类作用域
- 01-23[C++ Primer] : 第15章: 面向对象程序设计
- 01-23C++ Primer 学习笔记_67_面向对象编程 --转换与继承、复制控制与继承
- 01-23C++面向对象程序设计的一些知识点(4)