C++
不吐桔子皮
这个作者很懒,什么都没留下…
展开
-
C++中模板总结:函数模板和类模板
C++中的一种编程思想称为泛型编程,主要利用的技术就是模板。C++提供两种模板机制:函数模板和类模板总结:1、函数模板利用关键字template2、使用函数模板有两种方式:自动类型推到、显示指定类型3、模板的目的是为了提高复用性,将类型参数化注意事项:1、自动类型推导,必须推导出一致的数据类型T,才可以使用2、模板必须要确定出T的数据类型,才可以使用...原创 2020-10-22 09:04:24 · 379 阅读 · 0 评论 -
C++中虚析构和纯虚析构
虚析构和纯虚析构是为了解决以下问题:多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码虚析构和纯虚析构共性:1、可以解决父类指针释放子类对象2、都需要有具体的函数实现虚析构和纯虚析构的区别:如果是纯虚析构,该类属于抽象类,无法实例化对象语法:虚析构:virtual ~类名(){}纯虚析构:virtual ~类名() = 0;类名::~类名(){}总结:1、虚析构和纯虚析构都是用来解决通过父类指针释放子类对象2、如果子类中没有堆区数据,可以不写为虚析原创 2020-10-10 09:57:12 · 323 阅读 · 0 评论 -
C++中类的三大特性之一:多态的原理
有一个指针vftpr指向vftable原创 2020-10-09 18:38:13 · 129 阅读 · 0 评论 -
C++中的菱形继承原理和解决方法
如上图,菱形继承。带来的主要问题:子类继承两份相同数据,导致资源的浪费以及毫无意义解决方法:利用虚继承在A和C继承Base类前加关键字virtualclass Base{int age;};//A继承baseclass A:virtual public Base{};//C继承baseclass C:virtual public Base{};//D继承A和Cclass D:public A, public C{};现在,Base中有属性a,如果不加virtual,那么现在进行.原创 2020-09-27 13:57:57 · 286 阅读 · 0 评论 -
引用的本质在C++内部是一个指针常量
引用的本质在C++内部是一个指针常量。如:int a = 10;int& b = a;就相当于intconst b = &a;我们知道指针常量是不能再指向其他变量的,也就是它的地址不能变了,所以b只能作为a的别名,而不能再作为其他变量的别名。(即引用一旦初始化后,就不可以发生改变)。同时,指针常量虽然不能再指向其他变量,但是他指向变量的值可以改变,即b=20;是正确的,也就是此时a为20。所以对于引用来说,b=20;是正确的,可以通过别名改变这个变量的值,相当于C++内部自动转换原创 2020-09-16 15:04:31 · 1925 阅读 · 0 评论