c++多态:静态多态和动态多态

多态:即多种形态。对不同对象发送同一消息,不同对象会做出不同的响应。多态分为静态多态和动态多态。
1.静态多态:
静态多态又称编译期多态:是指在**编译阶段就知道程序执行到这里接下来会执行哪个函数。**例如:函数重载,对象名加点操作符执行函数等都是静态多态。函数重载是函数名修饰规则从而确定执行哪个函数,而对象名加点操作符是通过this指针来确定的。
2.动态多态:
动态多态是利用虚函数实现运行时的多态,即在编译期并不知道接下来执行哪条语句,只有运行到这里才知道接下来要调用哪个函数。
实现动态多态的条件:
1.函数在基类中声明为虚函数,并且在派生类中重写;
2.对象的父类指针或引用,如果对象指向子类(子类对象的引用/指针赋给基类对象引用/指针),则调子类的虚函数;如果对象指向父类对象,则调父类的虚函数。

class A
{
public:
	virtual void func1()
	{
		cout << "A::func1()" << endl;
	}
	void display()
	{
		cout << "A::display()" << endl;
	}
	void display(int i)
	{
		cout << "A::display(int i)" << endl;
	}
protected:
	int _a;
};

class B : public A
{
public:
	virtual void func1()
	{
		cout << "B::func1()" << endl;
	}
protected:
	int _b;
};

void func(A& a)
{
	a.func1(); //动态多态
	a.display();  //函数重载 即静态多态
	a.display(10);
}


int main()
{
	A a;
	B b;
	func(a);
	func(b);
	system("pause");
	return 0;
}

在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值