gpt4 book ai didi

c++ - C++中的虚函数实例化有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:04:53 25 4
gpt4 key购买 nike

下面两个声明有什么区别?

virtual void calculateBase() = 0;  
virtual void calculateBase();

我读到第一个 (=0) 是一个“纯抽象函数”,但第二个是什么?

最佳答案

第一个是“纯虚拟”——它会使类抽象,尝试实例化它会导致编译器错误。它旨在用作基类,其中派生类通过实现纯虚函数来实现必要的行为。尽管可以,但您不必在基类中实现该函数。
这是一种经常用于两种设计模式的模式:

  • "template method"设计模式,其中基类围绕函数调用实现一个结构,但是函数调用的细节必须由派生类填写,并且
  • “接口(interface)”设计模式,因为 C++ 没有接口(interface)关键字。抽象基类,理想情况下只有纯虚函数,没有成员数据,是定义接口(interface)的 C++ 方式。

第二个声明只是一个普通的虚成员函数声明。如果您未能在基类中实现成员函数,您将得到编译器错误。它仍然是虚拟的,这意味着覆盖派生类中的行为可能很有用。

关于c++ - C++中的虚函数实例化有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1420552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com