C++
文章平均质量分 87
C++中的一些基本概念
Zinc_Axin
这个作者很懒,什么都没留下…
展开
-
C++ 虚析构和纯虚析构
使用C++多态特性的时候,实际上是父类的指针或者引用指向子类的对象。若子类中有些属性是通过new操作符开辟到堆区的话,之后再通过delete操作符析构父类的对象却无法调用到子类的析构函数,必然存在内存泄漏的隐患。创建一个名为Animal的父类在类里,为构造函数,析构函数以及虚函数分别做输出打印,方便后面观察。 Speaking函数加入virtual关键字是实现多态的必不可少的一个条件(子类要重写父类的虚函数),具体可以参考之前一篇https://mp.csdn.net/mp_blog/cre原创 2021-08-03 14:59:47 · 306 阅读 · 0 评论 -
C++中的多态
多态是C++面向对象三大基本特性之一(封装,继承,多态)。多态相对于其它两个特性是相对比较复杂的。多态又分为静态多态和动态多态,通俗点的解释就是一种表像多种形态(纯粹个人理解)。静态多态又称编译期多态,即在系统编译期间就可以确定程序将要执行哪个函数。例如,函数重载,运算符重载动态多态是利用派生类和虚函数相结合的形式实现运行时的多态,即在系统编译的时候并不知道程序将要调用哪一个函数,只有在运行到这里的时候才能确定接下来会跳转到哪一个函数。静态多态和动态多态本质的区别:静态多态----地原创 2021-03-28 03:32:44 · 557 阅读 · 0 评论 -
C++中浅拷贝导致堆区内存重复释放
在C++中,编译器为某一个类提供了3个默认函数,其中包括默认的构造函数,默认的赋值构造函数(又叫拷贝构造函数),默认的析构函数。默认构造函数----编译器提供的无参的默认函数1. 如果程序员自己不提供默认的函数,则编译器会自己创建一个默认构造函数;如果程序员自己定义一个有参的构造,则编译器不会在提供默认的无参构造函数。2. 如果自己定义一个有参的构造,则编译器不会在提供默认的无参构造函数。默认析构函数----编译提供的默认析构函数是空实现,没有任何的代码,如果想要释放堆区的数据,需要程序员自原创 2020-09-01 20:00:02 · 3822 阅读 · 6 评论