c++
文章平均质量分 74
开始迷茫了
这个作者很懒,什么都没留下…
展开
-
引用和指针
引用是什么引用不是重新定义一个变量,而是给一个已经存在的变量取的别名。 语法:类型& 引用变量名=已定义的变量名 引用的特点: 1、一个变量可以有多个别名。 2、引用必须初始化。 3、引用只能在初始化的时候使用一次,不能在作为其它变量的别名。 我们可以看出别名和本来的变量指向同一块空间,是否引用变量的改变会引起原有变量的改变?const引用#includ...原创 2018-03-20 18:26:06 · 135 阅读 · 0 评论 -
多态的对象模型
研究虚函数表多态就是有多种形态,满足两个条件1、虚函数的重写2、父类的引用或者指针才能构成多态,形成多态以后,就能实现父类指针/引用指向父类对象时调用父类的虚函数,指向子类对象是调用子类的虚函数。 1、虚函数的存储是怎样的?虚函数表是通过一块连续的内存来存储虚函数的地址。在有虚函数的对象事例中就存在一张虚函数表(也叫虚表) 来画一下对象模型:我们猜想存放虚函数表地址的位置在...原创 2018-05-16 21:07:48 · 143 阅读 · 0 评论 -
c++--------异常处理机制
进程组原创 2018-06-23 15:21:40 · 229 阅读 · 0 评论 -
迭代器失效问题以及vector和list的实现
什么是STLSTL是标准模板库。STL六大组件 容器 迭代器 算法 仿函数 适配器(adapter) 空间配置器(allocator) vector\list \deques是一种数据结构 (如同一个指针)提供了访问容器对象的方法,而且不暴露对象的私有成员保持封装,减少了学习成本 操作容器中的数据的模板函数(find()函数就在算法中)...原创 2018-06-16 23:03:14 · 1640 阅读 · 0 评论 -
智能指针的进步史(Auto_ptr-----scoped_ptr--------------shared_ptr(weak_ptr))
为什么会有智能指针之所以引出智能指针是为了解决内存回收问题,就拿抛异常-捕获异常的场景来说吧,我们知道异常捕捉的时候会引起执行流的乱跳,所以假如有些空间是new或者malloc出来的那么我们就要手动的释放,而不确定哪里会捕捉到异常也同样不确定最终异常是否被捕捉,所以为了避免内存泄露,我们就会抛异常时候进行释放,无异常也要释放,但是这仍然有疏漏,有的时候会释放多次,我们就想怎样让这些空间不用的时...原创 2018-06-09 18:21:21 · 334 阅读 · 0 评论 -
介绍STL中deque的框架
deque概述deque是一种基于list和vector的优缺点而又画出来的一种容器,vector最大的优点就是可以实现随机访问,而list最大的优点却是删除元素和插入元素非常的方便和快捷,所以引出了我们的双向队列(deque):双向开口的容器deque相比于vector最大的差异就在于支持常熟时间内对首尾两端进行插入和删除操作,而且deque没有容量的概念,其内部采用分段连续内存空间来存...原创 2018-06-19 08:46:47 · 244 阅读 · 0 评论 -
数据结构之高度平衡搜索树AVL树(含经典面试题----判断一棵树是否是AVL树)
什么是AVL树如何创建一个红黑树满足二叉搜索树满足红黑树的性质红黑树的插入左旋右旋原创 2018-07-08 20:46:01 · 4572 阅读 · 2 评论 -
C++内存管理(内含面试题:C和C++的区别,new 和delete的底层原理)
1、new/delete、new[]/delete[]new、delete是操作符,用来分配空间和清理对象的。new[]、delete[]是来为对象数组分配空间和清理对象的。int* p1=new int;//分配一个int大小的空间 int* p2=new int(3);//分配一块空间,并将空间初始化成3. int* p3=new int[3];//分配3个int对象的空间。...原创 2018-07-20 11:18:20 · 4751 阅读 · 5 评论 -
详解C语言和C++的区别与联系,指针和引用的区别,new/delete和malloc/free的区别
C++是C语言的扩充,不仅可以沿袭使用C语言的语法,C++还有自己的特殊的部分。 那就主要说一说C语言和C++的区别: 1、C语言是面向过程语言,但是C++是面向对象语言(什么是面向对象:将实现功能的模块封装在类里,把细节交给类去实现,用户使用时只需要调用接口就可以了,不需要关注底层是如何实现的)。 2、C语言中函数传参尽量使用传地址的方式,即用指针(一来当变量过大的时候避免值传递的拷贝空间...原创 2018-07-23 01:05:41 · 720 阅读 · 0 评论 -
模板实现vector\List;适配器适配栈和队列
1、vector.h#pragma oncetemplate <class T>#include<string>//这里使用不带有.h的头文件class vector{public: void PushBack(const T& x){ size_t size = Size(); check_capacity();...原创 2018-05-12 17:08:57 · 215 阅读 · 0 评论 -
模板(模板函数/类、模板的特化、模板的分离编译)
1、什么是模板?模板是实现函数复用的手段,类似于模具。当实现方法基本相同但是不同类型在使用时都实现一份代码相对来说就会很繁琐,而且类型是无限的,在使用方法时类型也不确定,如果写好一个可以接受任意类型的方法,那么使用时可以套用一个模板; 模板分为模板函数和模板类。关键字templatetemplate<typename T>template<class T&am原创 2018-05-12 14:18:22 · 270 阅读 · 1 评论 -
c++命名空间,重载,缺省参数
1、认识c++c语言是c++的一个子集。在c的基础上c++ 又有了很多新特性 c++基本数据类型 2、c++命名空间:相当于一个更加灵活的文件域,可以起到名字隔离的作用。 此时在访问时需要使用操作符 ::#include<iostream>using namespace std;namespace my{ int a = 10;}int...原创 2018-03-19 18:11:46 · 155 阅读 · 0 评论 -
const&内联&友元&静态成员
const修饰成员函数在成员函数后面加上const关键字,const修饰得是this指针指向的对象,保证调用这个const成员函数的对象在函数内不会被改变。 思考题: 1、const对象可以调用非const成员函数和const成员函数? 2、非const对象可以调用非const成员函数和const成员函数? 3、const成员函数内可以调用其他的const成员函数和非const成员...原创 2018-04-03 21:20:51 · 206 阅读 · 0 评论 -
动态内存管理(new&delete)
c语言动态内存管理 malloc/calloc/realloc/free**函数** 1、区别:malloc单纯向内存申请一块空间,返回类型是void*;calloc和malloc做同样的事情,但是会给申请的空间初始化;realloc是起到扩容的作用,当当前内存空间不够时,调用realloc此时分两种情况,如果原来空间后面有足够空间就在原基础上扩充空间即可,否则,重新开空间,将原来的...原创 2018-04-05 15:59:22 · 244 阅读 · 0 评论 -
说一说深浅拷贝那点事儿
// 1.现代写法// 2.传统写法// 3.字符串增删查改#define _CRT_SECURE_NO_WARNINGS 1#include&lt;iostream&gt;#include&lt;stddef.h&gt;#include&lt;string.h&gt;#include&lt;assert.h&gt;using namespace std;cla原创 2018-04-07 00:16:24 · 179 阅读 · 0 评论 -
继承
继承方式与访问限定符的关系:继承实现了复用。主要过程就是父类的成员变成子类的一部分。 切片#include<iostream>using namespace std;class Person{public : void Display(){ cout << "Person" << endl; }pri...原创 2018-04-22 23:27:17 · 133 阅读 · 0 评论 -
虚继承
虚继承的必要性 解决菱形继承带来的数据冗余和二义性。由于B 和C都继承了类A,那么B和C中就各有一份A的内容,而D又分别继承了B和C,那么D中就有两份a,造成了数据冗余,而且在访问_a成员时,就会有二义性的产生,指向不明。所以为了解决这种问题引出了虚继承什么是虚继承虚继承就是在B和C在继承A时加上关键字virtual就是虚继承了,#include<iostream&...原创 2018-04-26 10:51:03 · 207 阅读 · 0 评论 -
多态和虚函数重写
虚函数类的成员函数前面加上virtual关键字,那么成员函数就变成了虚函数。重写 当在子类定义了一个与父类完全相同(函数名相同、参数相同、返回值相同、协变除外)的虚函数时,那么子类的虚函数就重写(覆盖)了父类的虚函数。多态当使用基类的指针或者引用调用重写的虚函数时,指向父类就调用父类的虚函数,指向子类则调用子类的虚函数,这种现象叫做多态 多态的条件: 1...原创 2018-04-26 11:43:33 · 6015 阅读 · 0 评论 -
STL相关知识之空间配置器底层实现原理
//我们知道空间配置器在实现的时候其实是封装了一层malloc,如果定义了__USE_MALLOC宏就用一级空间配置器,//没有的话就是二级空间配置器./////////////////////////////////////////////////////一级空间配置器(内存大于128b)//1、申请空间,利用allocate,释放空间使用deallocate//2、申请空间失败调用...原创 2018-08-12 21:34:47 · 273 阅读 · 0 评论