一、继承中类的类型转换规则
我们普通的编程规则规定,如果我们想把引用或指针绑定到一个对象上,则引用或指针的类型必须与所绑定的对象的类型一致或者对象的类型含有一种可接受的const类型转换规则。但是继承关系中的类比较例外,其规则如下:
①我们可以将基类的指针或引用绑定到派生对象上
#include <iostream>
class A {};
class B:public A{};
int main()
{A *a;B b;a = &b;return 0;
}
②即使不是指针/引用类型,我们也可以将派生类转换为基类
#include <iostream>
class A {};
class B:public A{};
int main()
{A a;B b;a = b;return 0;
}
②不能将基类对象绑定到派生类的指针/引用上
A a;
B *b;
b = &a; //程序错误,不能将基类对象转换为派生类对象
二、转换的本质
派生类可以转换为基类的本质是:
①为什么派生类可以转换为基类:派生类从基类而来,因此派生类中包含了基类的方法和成员。此时基类可以通过指针或引用指向派生类(相