一个公有派生类的对象在使用上可以被当作基类的对象,反之则禁止。
具体表现在:
- 派生类的对象可以隐含转换为基类对象。
- 派生类的对象可以初始化基类的引用。
- 派生类的指针可以隐含转换为基类的指针。
通过基类对象名,指针只能使用从基类继承的成员
下面的代码中展示了三种情况:
类型转换之后,就可以使用基类中的成员;但是基类不能转化为派生类的对象
#include<iostream>
using namespace std;
class A
{
public:
void show()
{
cout << "111" << endl;
}
void show1()
{
cout << "111222" << endl;
}
};
class B :public A
{
public:
void show()
{
cout << "222" << endl;
}
};
void test1(A a)
{
cout << "派生类的对象可以隐含转换为基类对象:" << endl;
a.show1();
}
void test2(A* a)
{
cout << "派生类的指针可以隐含转换为基类的指针:" << endl;
a->show1();
}
int main()
{
B b;
//派生类的对象可以隐含转换为基类对象。
test1(b);
//派生类的对象可以初始化基类的引用。
A &aa = b;
//派生类的指针可以隐含转换为基类的指针。
test2(&b);
cout << "派生类的对象可以初始化基类的引用:" << endl;
aa.show1();
system("pause");
return 0;
}