返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++虚构函数给我们带来什么好处
  • 184
分享到

C++虚构函数给我们带来什么好处

2023-06-17 17:06:25 184人浏览 八月长安
摘要

小编给大家分享一下c++虚构函数给我们带来什么好处,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!当我们在使用C++编程语言进行程序开发的时候,会逐渐的发现这一语言

小编给大家分享一下c++虚构函数给我们带来什么好处,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

当我们在使用C++编程语言进行程序开发的时候,会逐渐的发现这一语言给我们的程序开发带来了非常大的好处。我们知道,用C++开发的时候,用来做基类的类的C++虚构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明:

有下面的两个类:

  1. class ClxBase  

  2. {  

  3. public:  

  4. ClxBase() {};  

  5. virtual ~ClxBase() {};  

  6. virtual void DoSomething() { cout << "Do something 
    in class ClxBase!" << endl; };  

  7. };  

  8. class ClxDerived : public ClxBase  

  9. {  

  10. public:  

  11. ClxDerived() {};  

  12. ~ClxDerived() { cout << "Output from the destructor 
    of class ClxDerived!" << endl; };   

  13. void DoSomething() { cout << "Do something 
    in class ClxDerived!" << endl; };  

  14. }; 

代码

ClxBase *pTest = new ClxDerived;  pTest->DoSomething();  delete pTest;

的输出结果是:

Do something in class ClxDerived!  Output from the destructor of class ClxDerived!

这个很简单,非常好理解。

但是,如果把类ClxBase析构函数前的virtual去掉,那输出结果就是下面的样子了:

Do something in class ClxDerived!
  • C++遍历集合应用经验总结

  • C++赋值函数代码详解

  • C++变量声明相关概念解析

  • C++实现WPF动画具体操作方法详解

  • C++中文字符相关应用方法详解

也就是说,类ClxDerived的析构函数根本没有被调用!一般情况下类的析构函数里面都是释放内存资源,而析构函数不被调用的话就会造成内存泄漏。我想所有的C++程序员都知道这样的危险性。当然,如果在C++虚构函数中做了其他工作的话,那你的所有努力也都是白费力气。

所以,文章开头的那个问题的答案就是--这样做是为了当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用。

当然,并不是要把所有类的析构函数都写成虚函数。因为当类里面有虚函数的时候,编译器会给类添加一个虚函数表,里面来存放虚函数指针,这样就会增加类的存储空间。所以,只有当一个类被用来作为基类的时候,才把C++虚构函数写成虚函数。

以上是“C++虚构函数给我们带来什么好处”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网其他教程频道!

--结束END--

本文标题: C++虚构函数给我们带来什么好处

本文链接: https://www.lsjlt.com/news/290923.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++虚构函数给我们带来什么好处
    小编给大家分享一下C++虚构函数给我们带来什么好处,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!当我们在使用C++编程语言进行程序开发的时候,会逐渐的发现这一语言...
    99+
    2023-06-17
  • 便利店小程序开发能给我们带来什么好处
    小编给大家分享一下便利店小程序开发能给我们带来什么好处,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、便利店小程序开发能给我们带来什么?对于商家来说:商家可以增...
    99+
    2023-06-27
  • 编程算法的核心是什么?Python 和 Shell 能给我们带来什么启示?
    编程算法的核心是什么?Python 和 Shell 能给我们什么启示? 编程算法是计算机科学中最基础的部分之一,也是应用最广泛的一部分。它是指为解决特定问题而设计的一组指令,它们能够用来处理数据、执行计算、控制计算机硬件和软件资源等。 编程...
    99+
    2023-08-21
    bash 编程算法 shell
  • 投票小程序可以给商家带来什么好处
    这篇文章主要讲解了“投票小程序可以给商家带来什么好处”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“投票小程序可以给商家带来什么好处”吧!  1、拉近客户距离  在朋友圈里为别人拉票,说明你和...
    99+
    2023-06-26
  • 微信小程序能给教育行业带来什么好处
    这篇文章主要介绍微信小程序能给教育行业带来什么好处,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!通过小程序教育行业可以获得更多的资源微信小程序的出现可以帮助教育行业连接课程、公共号码和社交网络。用户可以获得最新的活动...
    99+
    2023-06-27
  • 如果我们使用不带参数的 UNIX_TIMESTAMP() 函数,MySQL 将返回什么?
    在这种情况下,MySQL 返回当前日期和时间的 Unix 时间戳。因此,我们可以说不使用参数与使用 NOW() 作为 UNIX_TIMESTAMP() 函数的参数相同。例如,如果我们运行没有值且使用 NOW( 的 UNIX_TIMESTAM...
    99+
    2023-10-22
  • 宠物店小程序开发能给商家带来什么好处
    本篇内容主要讲解“宠物店小程序开发能给商家带来什么好处”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“宠物店小程序开发能给商家带来什么好处”吧!  宠物店小程序开发能给商家带来哪些好处  1、促进...
    99+
    2023-06-26
  • C++虚析构函数的作用是什么
    C++虚析构函数的作用是确保在通过基类指针删除派生类对象时能正确调用派生类的析构函数,以避免内存泄漏和其他问题。当基类指针指向一个派...
    99+
    2024-03-11
    C++
  • 微信小程序开发给商家和企业带来了什么好处
    这篇文章主要介绍了微信小程序开发给商家和企业带来了什么好处,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。两年多来,小程序的流量池和商机潜力日益增加,越发受到了商家们的重视,纷...
    99+
    2023-06-27
  • C++ 函数返回引用类型有什么好处?
    c++++ 中的函数返回引用类型的好处包括:性能提升:引用传递避免了对象复制,从而节省了内存和时间。直接修改:调用方可以直接修改返回的引用对象,而无需重新赋值。代码简洁:引用传递简化了代...
    99+
    2024-04-20
    函数 c++ 引用
  • C++ 函数返回枚举类型时有什么好处?
    使用枚举类型作为函数返回值的好处:提高可读性:使用有意义的名称常量,增强代码理解。类型安全性:确保返回值符合预期范围,避免意外行为。节省内存:枚举类型通常占用较少存储空间。易于扩展:可以...
    99+
    2024-04-20
    枚举 函数返回 c++ overflow
  • Python中最好的API是什么?让我们来看一下数组和Unix系统如何受益于它!
    Python是一种广泛使用的编程语言,它有着强大的功能和易用性。在Python中,API是一种非常重要的概念,它是应用程序接口的缩写,提供了一种程序与其他程序之间进行交互的方法。Python中有许多API可供使用,但其中最好的API是什么...
    99+
    2023-08-06
    api 数组 unix
  • 如果我们尝试仅向 MySQL EXTRACT() 函数提供日期值来提取时间值,会输出什么?
    当我们尝试从日期中提取小时值时,EXTRACT() 函数将给出输出 0 并带有警告,如下面给出的示例所示 -mysql> Select EXTRACT(Hour from '2017-10-20'); +-...
    99+
    2023-10-22
  • C++ 函数异常处理的未来发展趋势是什么?
    c++++ 函数异常处理的未来趋势包括:自定义异常类型:更加灵活和可扩展,可细粒度处理错误。改进的异常推理:编译器智能推理异常传播,提高代码质量。协程和异常:无缝协作,编写健壮并行代码。...
    99+
    2024-04-15
    c++ 异常处理 标准库
  • C++ 函数错误处理和异常处理的未来趋势是什么?
    未来 c++++ 错误处理趋势包括:改进 errno,提供更详细的错误信息。标准化错误代码和消息,统一不同库的格式。扩展 noexcept 指定符,优化编译器优化。弃用 seh,采用更现...
    99+
    2024-04-23
    c++ 异常处理
  • 用 C++ lambda 表达式实现函数式编程有什么好处?
    c++++ lambda 表达式为函数式编程带来了优势,包括:简洁性:匿名内联函数,提升代码可读性。代码重用:可传递或存储 lambda 表达式,方便重用代码。封装:提供封装代码段的方法...
    99+
    2024-04-17
    函数式编程 c++ 封装性 代码可读性
  • 如果我们在 LPAD() 或 RPAD() 函数中提供一个空字符串来填充其他字符串,MySQL 将返回什么?
    假设如果我们在 LPAD() 或 RPAD() 函数上提供一个空字符串用于填充,那么 MySQL 将返回 NULL 作为输出。以下示例将演示它 -示例mysql> Select LPAD('ABCD',...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作