c++ 类继承中的隐藏、覆盖、重载与using使用

本文探讨了C++类继承中的关键概念,包括函数重载(同名不同参数)、覆盖(多态实现,基类virtual函数在子类中的应用)、隐藏现象及如何通过using关键字来调用基类方法。重点指出隐藏规则,如基类virtual函数在子类中被同名不同参函数隐藏,或非virtual函数被子类同名函数隐藏,并强调不能通过返回类型来实现函数重载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多态、using

class base
{
private:
	int x;
public:
	virtual void f1() = 0;
	virtual void f2() 
	{
		cout<<"vf2"<<endl;
	}
	void f2(int x){
		cout<<"xf2"<<endl;
	};

	void f3()
	{
		cout<<"f3"<<endl;
	}
	void f3(int x)
	{
		cout<<"f33"<<endl;
	}
};

class derive:public base
{
public:
	void f1()
	{
		cout<<"d:f1"<<endl;;
	}

	void f2()
	{
		cout<<"d:f2"<<endl;
	}

	void f3()
	{
		cout<<"d:f3"<<endl;
	}
	using base::f3;
};

int main()
{
	derive d;
	int x = 4;
	d.f1();  //子类实现了基类的纯虚函数,调用的是子类的虚函数
	d.f2();  // 如上
	d.f3();  // 子类中的f3隐藏了基类中的两个f3,子类只能调用其自身实现的函数,无法调用基类中的同名函数(非虚函数可以隐藏虚函数)
	d.f3(x); // 在使用了using base::f3;后子类可以调用基类中的函数,但同名同参数的基类函数将被覆盖


	cout<<"/////////基类指针/////////////// "<<endl;


	base *pb = &d;  // 用基类来调用子类,所有非虚函数将直接调用基类的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值