C++中多态的理解

#include<iostream>
using namespace std;
class father
{
	public:
		virtual void show(){cout<<"call father::show()"<<endl;}
		virtual void show(int){cout<<"call father::show(int)"<<endl;}
};
class son:public father
{
	public:
		void show(){cout<<"call son::show()"<<endl;}
};
int main()
{
	father *pf = new father;
	father *ps = new son;
	father f;
	son s;
	pf->show();
	pf->show(1);
	ps->show();
	ps->show(1);
	cout<<"object call"<<endl<<endl<<endl;
	f.show();
	f.show(1);
	s.show();
	//s.show(1);   添加后会出错
}
添加s.show(1)后会出错:classExtend.cpp: 在函数‘int main()’中:
classExtend.cpp:28:10: 错误:对‘son::show(int)’的调用没有匹配的函数
classExtend.cpp:28:10: 附注:备选是:
classExtend.cpp:12:8: 附注:virtual void son::show()
classExtend.cpp:12:8: 附注: 备选需要 0 实参,但提供了 1 个


输出结果:

call father::show()

call father::show(int)
call son::show()
call father::show(int)
object call


call father::show()
call father::show(int)
call son::show()


C++多态性具有静态多态和动态多态两个阶段。在编译时多态阶段,多态性体现在函数重载和泛型编程方面。通过函数重载,可以使用相同的函数名但不同的参数来重载出不同的函数,这是静态多态性的一种表现。编译器会根据函数的不同参数将其绑定到特定的形式上。在动态多态阶段,多态性体现在运行时,具体引用的接口在程序运行时才能确定,这是动态多态性的一种表现。多态的字面意思就是多种状态,在面向对象的程序设计,一个接口可以有多种实现方式。C++通过继承、多态、虚函数等机制来实现多态的概念。因此,C++多态性使得程序可以根据具体的对象类型来调用相应的方法或函数,从而提高代码的灵活性和可复用性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [C++面试题总结之基础知识点](https://blog.csdn.net/weixin_42060900/article/details/96503788)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [C++多态理解](https://blog.csdn.net/weixin_44244332/article/details/123507232)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值