<
>中文page 74:
我们也不能再随意地将派生了的指针转换成基类的指针.
一直以为, 一个类继承自它的基类, 那总是能安全地把一个派生类的指针自动转换为其基类的指针.
class D : public B {};
忽略了一个情况, 如果
class B {};
class D : B{};
B * b= new D();
对于私有继承, 这就不合法了.
VC编译器的错误是:
error C2243: 'type cast' : conversion from 'D *' to 'B *' exists, but is inaccessible
从对象设计的概念上来说, D没有继承B的公共接口, 那么把它的指针转换成B的指针也就没有什么意义了.
阅读(730) | 评论(0) | 转发(0) |