C++派生类与基类的转换
每一个派生类对象包含一个基类部分,这就意味着可以像使用基类对象一样在派生类对象上执行操作。因为派生类对象也是基类对象,所以存在从派生类类型的引用到基类类型的自动转换,即,可以将派生类对象的引用转换为基类对象的引用,对指针也类似。基类对象既可以作为独立对象存在,也可以作为派生类对象的一部分而存在,因此,一个基类对象可能是也可能不是一个派生类对象的一部分,结果没有从基类引用到派生类引用的自动转换,指针也是如此。
相对于引用或者指针而言,对象转换的情况更为复杂。虽然一般可以使用派生类型的对象对基类类型对象进行初始化或者赋值,但,没有从派生类对象到基类类型对象的直接转换。
可以直接使用派生类的对象对基类对象进行赋值或者初始化。
可以直接使用派生类的引用或者对象对基类引用进行赋值或者初始化。
引用转换不同于转换对象
将派生类对象传递给希望接受基类引用的函数,引用直接绑定到该对象,对象本身未被复制。
将派生类对象传递给希望接受基类对象的函数,形参类型是固定的-----在编译和运行时形参都是基类类型对象,如果实参是派生类对象,则该派生类对象的基类部分被复制到形参。
派生类到基类转换的可访问性
像继承的成员一样,从派生类到积累的转换可能是也可能不是可访问的。转换是否可访问取决于在派生类的派生列表中指定的访问标号。如果是public继承,则可以,否则不可以转换。
补充:软件开发 , C++ ,