C++虚函数使用

一 概念区分

父子类具有同名函数

父类具有虚函数

父类具有纯虚函数

二 对比实现

2.1 同名函数和虚函数对比

1 虚函数在采用父类指针指向不同类型时,调用同名函数仍然是调用父类函数,但调用虚函数时调用的是子类重写函数。

2 父类采用引用或者指针指向子类时才能实现动态多态的效果。

class ParentClass
{
public:
    void sameName();

    virtual void virtualFunc();
};


class SonClass : public ParentClass
{

public:
	void sameName();

	void virtualFunc();

};
	SonClass son = SonClass();

	ParentClass parent = ParentClass();
	parent = son;
	parent.sameName(); // parent
	parent.virtualFunc(); // parent

	ParentClass* parent2 = new ParentClass();
	parent2 = &son;
	parent2->sameName(); // parent
	parent2->virtualFunc(); // son

2.2  虚函数和纯虚函数对比

1 虚函数和纯虚函数重写时都可以使用ovverrird进行修饰,也可以省略,但普通函数不可以使用。

2 包含纯虚函数的类无法包含其它类型的函数,成为抽象类。

3 抽象类无法实例化对象,抽象类通常只包含纯虚函数,因为抽象类无法创建对象进行调用相关函数。

4 抽象类通常是当作接口进行使用的,类似于OC中的协议

class ParentClass
{
public:
    virtual void pureVirtualFunc() = 0;
};

class SonClass : public ParentClass
{

public:
	void pureVirtualFunc() override;

};

参考文献:

C++中的虚函数_c++ 虚函数-CSDN博客

c++中引用与指针的区别:详细介绍_c++指针和引用的区别-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值