c++的向上转型

文章讨论了C++中的继承概念,通过Son和Dugter类继承自Father类的例子,展示了如何使用指针和引用进行向上转型。强调了向上转型在处理多个子类时能避免重载函数,保持代码简洁和易于维护。同时提到了在复制构造函数等场景中,父类引用或指针的使用是必要的。
摘要由CSDN通过智能技术生成
#include "Father.h"
class Dugter :public Father
{
public:
	Dugter();
	~Dugter();
	void aa();
private:

};

void Dugter::aa(){
	cout << "女儿" << endl;
}
Dugter::Dugter()
{
	age = 11;
}

Dugter::~Dugter()
{
}
class Son:public Father
{
public:
	int classid;
	Son();
	~Son();
	void aa();
	void getclassid() {
		cout << "classid";
	}
private:
	
};
void Son::aa() {
	cout << "儿子";
}
Son::Son()
{
	age = 15;
}

Son::~Son()
{
}
class Father
{
public:
	int age;
	int money;
	Father();
	~Father();
	void aa() ;
	

private:

};
void Father::aa() {
	 cout << "father"; 
}
Father::Father()
{
	age = 50;//cout << "dd" << endl;
}

Father::~Father()
{
	//cout << "vv" << endl;
}
void test(const Father& fa);//引用
void test(const Father* fa);//指针
int main() {
	
		Son ab=  Son();
		cout <<"ab adress: " << &ab << endl;
		test(ab);
		Dugter ac = Dugter();
		cout <<"ac adress: " << &ac << endl;
		test(ac);
}
void test(const Father& fa) {
	cout << fa.age << endl;
	cout << &fa<<endl;
}
void test(const Father*fa) {
	cout << (*fa).age << endl;
	cout << fa<<endl;
}

在指针和引用的2种情况下,ab,ab1与fa的地址是相同的,ac,ac1与fa的地址是相同的。

说明向上转型后父类指针指的还是子类的对象。

如果没有向上转型的话,当我们有非常多的子类时,就会重载很多的函数,达不到代码简洁和好维护的目的。

当只接受父类引用时,比如复制构造 函数。这种情况下,需要向上转换。

Father fa = ab;
	cout << fa.age << endl;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值