基类与派生类的类型转换

一个公有派生类的对象在使用上可以被当作基类的对象,反之则禁止

具体表现在:

  • 派生类的对象可以隐含转换为基类对象。
  • 派生类的对象可以初始化基类的引用。
  • 派生类的指针可以隐含转换为基类的指针。

通过基类对象名,指针只能使用从基类继承的成员

下面的代码中展示了三种情况:

类型转换之后,就可以使用基类中的成员;但是基类不能转化为派生类的对象

#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;
}

猜你喜欢

转载自blog.csdn.net/qq_46423166/article/details/112384279
今日推荐