C++ Day09 面向对象 D 多继承、static

197 阅读1分钟
1. C++支持多继承吗?
  • 支持(但是不建议使用,会增加设计的复杂度)
2. 什么是菱形继承?如何解决菱形继承?
  • B 继承自 A;
  • C 继承自 A;
  • D 继承自 B和C; 就形成了菱形继承
  • 解决方法:使用虚继承
3. static 修饰的成员变量存放在哪里?static 修饰的成员变量成员对比全局变量有什么不同?
  • static 修饰的成员变量存放在全局区
  • static 修饰的成员变量成员\函数可以设定访问权限
4. public、private、protected 这些关键字是怎么起作用的?
  • 这些都是编译期的关键字,有编译器来控制,真正的汇编和机器码里面是没有这些关键字影子的
5. 思考下面代码的输出?说说对 newdelete 的理解?
int main() {
 int *p = new int(10);
 delete p;
 cout << *p << endl;
 return 0;
}
  • 上述代码,大概输出 4
  • new: ① 告诉操作系统,我要要分配 4 个字节 ② 操作系统会保证这 4 个字节不会再分配给别人
  • delete: ① 告诉操作系统,这个 4 个字节我不使用 ② 操作系统接下来很可能会把这 4 个字节分配给别人(通常不会清理这块内存)
6. 思考:可以通过寄存器指令修改const int a = 10; 中 a 的值吗?
  • 可以:下面寄存器指令就可以把 a 的值改成 170
  • register read esi
  • register write esi 0xaa