C++语言程序设计

11.1.6 基类和派生类之间的转换
假定我们定义了两个对象，一个是基类对象，另一个是派生类对象：
twoD two(15.0, 15.0);
threeD three(20.0, 20.0, 30.0);
派生类对象three同时也是基类对象two，派生类对象允许给基类对象赋值：
two = three;
对象two比对象three少一个数据成员z，这个赋值的效果是对象two收到对象three的x和y坐标值。
反过来，用基类对象对派生类对象赋值是不行的。例如：
three = two;
由于对象two没有z数据成员，使得对象three的数据成员z的值是不定的。所以，C++编译器不允许基类对象对派生类对象赋值。
派生类对象可以给基类对象赋值，派生类对象的地址也可以赋给指向基类对象的指针，例如：
threeD three(20.0, 20.0, 30.0);
twoD *pTwo;
下面的赋值是合法的：
pTwo = &three;
由于指针pTwo是指向twoD对象，在这个赋值过程中，派生类类型被隐式转换成twoD。所以，pTwo只能调用twoD的成员函数，需要注意的是：我们不能把一个指向派生类对象的指针指向基类的对象。
引用与指针类似。例如，如果一个函数A定义有twoD引用参数，用函数B调该函数A时，实参可以是从twoD派生的类的对象。在函数A内，可以访问twoD类的成员。