我正在阅读一些C++文本并获得以下代码:
class A { };
class B : public A { };
void main() {
A* p1 = new B; // B may be larger than A :OK [Line 1]
B* p2 = new A; // B may be larger than A :Not OK [Line 2]
}
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
那么,"更大"不是关键.真正的问题是"是一种"关系.
任何对象class B也是类型class A(class B也是class A由于继承),所以第一行是可以的(指针也class A可以指向一个对象class B),但反之不是真的(class A不是class B甚至可能没有)class B存在的想法),所以第二行不会编译.
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |