1. C++支持多继承吗?
2. 什么是菱形继承?如何解决菱形继承?
- B 继承自 A;
- C 继承自 A;
- D 继承自 B和C; 就形成了
菱形继承
- 解决方法:
使用虚继承
3. static 修饰的成员变量存放在哪里?static 修饰的成员变量成员对比全局变量有什么不同?
- static 修饰的成员变量存放在
全局区
- static 修饰的成员变量成员\函数可以
设定访问权限
4. public、private、protected 这些关键字是怎么起作用的?
- 这些都是编译期的关键字,有编译器来控制,
真正的汇编和机器码里面是没有这些关键字影子的
5. 思考下面代码的输出?说说对 new 和 delete 的理解?
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