C++:成员函数的重写、重载以及多态

本文通过C++代码示例展示了成员函数的重写与重载,并解释了对象多态性的概念。示例中包括基类BaseA与派生类ChildB,演示了如何实现函数重写及多态行为。

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

用一段代码展示成员函数的重写和重载,以及对象的多态特性

#include <iostream>
using namespace std;

class BaseA{
public:
void OverRideFunc() { cout << "BaseA func OverRideFunc" << endl;}
virtual void PolymorphicFunc() { cout << "BaseA func PolymorphicFunc" << endl;}
};


class ChildB: public BaseA{
public:
void OverRideFunc() { cout << "ChildB func OverRideFunc" << endl;}
void OverLoadFunc(int num) { cout << "ChildB func OverLoadFunc(int): " << num << endl; }
void OverLoadFunc(float num) { cout << "ChildB func OverLoadFunc(float): " << num << endl; }
virtual void PolymorphicFunc() { cout << "ChildB func PolymorphicFunc" << endl;}
};


int main()
{
ChildB child;
BaseA base;
BaseA *basePtr = &child;
cout << "function overload: " << endl;
cout << "    child.OverLoadFunc(1) ";
child.OverLoadFunc(1);
cout << "    child.OverLoadFunc(1.0f) ";
child.OverLoadFunc(1.0f);

cout << "function override: " << endl;
cout << "    child.OverRideFunc()";
child.OverRideFunc();
cout << "    base.OverRideFunc() ";
base.OverRideFunc();
cout << "    basePtr->OverRideFunc() ";
basePtr->OverRideFunc();

cout << "ploymorphic: " << endl;
cout << "    basePtr->PolymorphicFunc() ";
basePtr->PolymorphicFunc();
cout << "    child.PolymorphicFunc() ";
child.PolymorphicFunc();
cout << "    base.PolymorphicFunc() ";
base.PolymorphicFunc();


return 0;
}
特别是输出中,base指针指向继承类的对象时,调用OverRide函数,则执行的是base类的成员函数,这是函数重写的定义;base指针调用virtual函数,执行的是derived类的成员函数,这是多态的定义;

以下是输出:

function overload: 
    child.OverLoadFunc(1) ChildB func OverLoadFunc(int): 1
    child.OverLoadFunc(1.0f) ChildB func OverLoadFunc(float): 1
function override: 
    child.OverRideFunc()ChildB func OverRideFunc
    base.OverRideFunc() BaseA func OverRideFunc
    basePtr->OverRideFunc() BaseA func OverRideFunc
ploymorphic: 
    basePtr->PolymorphicFunc() ChildB func PolymorphicFunc
    child.PolymorphicFunc() ChildB func PolymorphicFunc
    base.PolymorphicFunc() BaseA func PolymorphicFunc



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值