虚函数和纯虚函数的区别是什么?

虚函数纯虚函数的区别:1、纯虚函数只有定义,没有实现;而虚函数既有定义,也有实现的代码。2、包含纯虚函数的类不能定义其对象,而包含虚函数的则可以。

虚函数和纯虚函数的区别是什么?

相关推荐:《C++视频教程》

虚函数(impure virtual)

  C++的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类提供默认的函数实现。
  子类可以重写父类的虚函数实现子类的特殊化。
  如下就是一个父类中的虚函数:

class A{public:     virtual void ss()    {        cout<<"我是基类的虚函数"<<endl;    }};

登录后复制

纯虚函数(pure virtual)

  C++中包含纯虚函数的类,被称为是“抽象类”。抽象类不能使用new出对象,只有实现了这个纯虚函数的子类才能new出对象。
  C++中的纯虚函数更像是“只提供申明,没有实现”,是对子类的约束,是“接口继承”。
  C++中的纯虚函数也是一种“运行时多态”。
  如下面的类包含纯虚函数,就是“抽象类”:

class A{public:    virtual void out1(string s)=0;  //我是基类的虚函数 };

登录后复制

举个栗子

#include#include#include#include#includeusing namespace std;class a{private:public:a(){      //构造函数用内联函数的形式 }//虚函数 virtual  void  xhs(){      //这个虚函数必须得在基类中实现 cout<<"我是基类的虚函数"<<endl;//即使是空的虚函数也要在基类中实现 }  //派生类中可以不写这个函数,但是派生类对象调用时会调用积累的虚函数 //纯虚函数 virtual void cxhs() =0;  //这个纯虚函数不在基类中实现,必须在子类中实现 }; class b:public a{private:    public:    void xhs(){         //这个是可有可无的     cout<<"我是派生类覆盖基类虚函数的函数"<<endl; }                        //*                         //*void cxhs(){         //这个是必须有实现的 cout<<"我是派生类覆盖基类虚函数的函数"<<endl; }       //*              //*}; //*  //*int main()      //*              //*{               //*              //*b c;        //*              //* c.xhs();    //*           //调用派生类的 c.cxhs();//调用派生类的 }

登录后复制

虚函数和纯虚函数的区别

1)、纯虚函数只有定义,没有实现;而虚函数既有定义,也有实现的代码。

纯虚函数一般没有代码实现部分,如 virtual void print() = 0; 2)而一般虚函数必须要有代码的实现部分,否则会出现函数未定义的错误。

2)、包含纯虚函数的类不能定义其对象,而包含虚函数的则可以。

以上就是虚函数和纯虚函数的区别是什么?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2492249.html

(0)
上一篇 2025年3月5日 01:05:42
下一篇 2025年3月5日 01:05:59

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • C++ 函数参数传递中虚函数的调用是如何实现的?

    c++++ 中虚函数参数传递的实现方式:虚拟表指针:每个类都包含一个指针指向名为 vtable 的数据结构,其中包含对所有虚函数的指针。函数指针:虚函数在函数参数列表中表示为指向函数指针的指针。动态绑定:编译器使用虚拟表指针查找函数的实际地…

    2025年3月3日
    200
  • C++ 虚函数调用约定的实现原理

    c++++ 虚函数调用通过函数指针表 (vptr) 和虚函数表 (vtbl) 实现。当调用虚函数时,编译器使用 vptr 定位 vtbl,其中存储着函数指针,从而执行正确的虚函数实现。具体过程包括:获取 vptr、定位 vtbl、获取函数指…

    2025年3月3日
    200
  • C++ 函数指针:指向虚函数

    指向虚函数的函数指针允许存储指向虚函数名称的指针。它们需要特定语法,包括类名和函数指针类型别名。当通过虚函数指针调用函数时,将调用派生类的具体实现,即使是从基类指针调用也是如此。确保函数指针与指向的虚函数匹配,否则会导致未定义行为。 C++…

    2025年3月3日
    200
  • 使用 C++ 函数的虚函数时要注意什么

    使用 c++++ 虚函数时需要注意:基类指针调用虚函数时会调用派生类中的覆盖函数。派生类覆盖虚函数时函数签名必须与基类一致。纯虚函数必须在派生类中覆盖。每个派生类有自己的虚函数表,用于确定调用哪个函数。虚函数可用于实现动态多态行为,如计算不…

    2025年3月3日
    200
  • C++ 函数的虚函数如何帮助实现继承

    虚函数是带 virtual 关键字的方法,实现继承中的多态。派生类可重写基类的虚函数,以实现不同的行为。虚函数概念:基类声明虚函数后,派生类将自动创建虚函数表 (vtable)。vtable 存储每个虚函数的实际地址,用于调用正确的实现。派…

    2025年3月3日
    200
  • C++ 函数的虚函数在多态中扮演什么角色

    C++虚函数在多态中的角色 多态性是面向对象编程的核心概念,它允许对象根据其类型以不同方式响应相同的调用。C++中的虚函数是实现此功能的关键机制。 什么是虚函数? 虚函数是一个被声明为virtual的成员函数。当一个派生类的对象调用虚函数时…

    2025年3月3日
    200
  • 如何测试 C++ 函数的虚函数的正确性

    通过使用掩码虚函数和多态指针测试,可以有效测试 c++++ 函数虚函数的正确性:掩码虚函数:使用 gmock 等框架的 nicemock 或 strictmock,强制调用虚函数。多态指针测试:使用多态指针,测试虚函数行为,无需知道具体类型…

    2025年3月3日
    200
  • 如何重写 C++ 函数的虚函数

    如何重写 c++++ 函数的虚函数?在派生类中声明具有相同名称和参数列表的函数。使用 override 关键字表示正在重写基类中的虚函数。 如何重写 C++ 函数的虚函数 虚函数允许 C++ 类中的派生类覆盖基类的方法。这使您能够扩展并修改…

    2025年3月3日
    200
  • 继承中虚函数的调用顺序是如何工作的

    继承中虚函数的调用顺序 在面向对象编程中,虚函数允许派生类覆盖基类的方法,从而实现多态性。当调用虚函数时,将根据实际对象的类型来确定调用哪个函数。 调用顺序 在继承层次结构中,虚函数的调用顺序遵循以下规则: 从派生类开始:从层次结构中调用虚…

    2025年3月3日
    200
  • C++ 中纯虚函数的作用是什么

    纯虚函数在 c++++ 中的作用是强制派生类实现特定功能,并允许派生类以不同方式实现同一接口,实现多态行为,具体表现为:强制派生类实现:确保所有派生类都提供所需的函数实现。实现多态行为:不同派生类可以以不同方式实现同一接口,通过基类指针或引…

    2025年3月3日
    200

发表回复

登录后才能评论