C++ 学习之多态与虚函数继承

本文通过C++代码示例展示了多态的概念,强调了必须通过基类的指针或引用调用虚函数来实现多态性。文章解释了虚函数在派生类中的重写以及函数重载的规则,并通过实例演示了如何在不同对象上调用同一行为产生不同结果。最后,文章通过main函数执行展示了这些概念的实际应用。

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

//多态就是通过同一个行为,对象不同会产生不同的结果

// 必须通过基类的指针或者引用调用虚函数
// 被调用的函数必须是虚函数, 并且派生类必须要对继承的基类的虚函数进行重写

#include<iostream>
using namespace std;

	class adults {
	public:
		virtual void buyticket() {
			cout << "adults tickets" << endl;
		}
	};

	class student :public adults {
	public:
		virtual void buyticket() {
			cout << "student tickets" << endl;
		}
	};

	void getticket(adults * ad) {
		ad->buyticket();
	}

	class person {
	public:
		virtual void print() {    // 因为参数(类型,数量,顺序)一致,此处发生了函数的重写
			cout << "It's person print" << endl;
		};
	};

	class child1 : public person {
	public:
		virtual void print() {
			cout << "It's student print" << endl;
		}
	};
	//如果函数名相同,但是参数中(顺序、个数、类型)不同的话,那么就会发生覆盖
	class Base {
	public:
		virtual void show(int num = 10) {
			cout << "Base:" << num << endl;
		}
	};

	class Base1 : public Base {
	public:
		virtual void show(int num = 20) {  // 因为有了缺省值,在运行的时候多态绑定Base1,会使用Base的缺省值运行Base1
			cout << "Base1:" << num << endl;
		}
	};
	int main() {
		adults a;
		getticket(&a);
		student s;
		getticket(&s);
		person* p = new child1();
		p->print();   //此处输出student
		person* p1 = new person();  // 此处输出person
		p1->print();

		Base* B1 = new Base1();
		B1 ->show();  // 输出10 

		return 0;
	}
	```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值