![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
蓝子娃娃
越努力,越幸运!!!
展开
-
史上最全的C++ STL容器解析
一、 浅谈 vector 容器1. vector 容器的概念我们知道,一个数组必须要有固定的长度,在开一个数组的时候,这个长度也就被静态地确定下来了。但是vector却是数组的“加强版”,对于一组数据来讲,你往vector里存多少数据,vector的长度就有多大。也就是说,我们可以将其理解为一个“变长数组”。事实上,vector的实现方式是基于倍增思想的:假如vector的实际长度为n,m为vector当前的最大长度,那么在加入一个元素的时候,先看一下,假如当前的n=m,则再动态申请一个2m大小的内原创 2020-08-01 18:47:37 · 1140 阅读 · 2 评论 -
C++ 智能指针详解
文章目录1. 为什么需要智能指针?2. 内存泄漏2.1 什么是内存泄漏2.2 内存泄漏分类2.3 如何避免内存泄漏3. 智能指针的使用及原理3.1 RAII4. C++11 和 boost 中智能指针的关系1. 为什么需要智能指针?下面我们分析一下下面这段程序有没有什么内存方面的问题?提示一下:注意分析 MergeSort 函数中的问题。#include <vector>void _MergeSort(int* a, int left, int right, int* tmp){原创 2020-08-21 12:27:35 · 384 阅读 · 0 评论 -
C++ 特殊类的设计
文章目录前言1. 请设计一个类,只能在堆上创建对象2. 请设计一个类,只能在堆上创建对象3. 设计一个类,不能被拷贝4. 设计一个类,不能被继承5. 设计一个类,只能创建一个对象前言本篇主要介绍了常见特殊类的设计方式1. 请设计一个类,只能在堆上创建对象实现方式:将类的构造函数私有,拷贝构造函数私有。防止别人调用拷贝构造再栈上创建对象提供一个静态的成员函数,在该静态成员函数中完成堆对象的创建class HeapOnly{public: static HeapOnly *createOb原创 2020-08-19 10:17:45 · 228 阅读 · 0 评论 -
C++ 类型转换
文章目录隐式类型转换1. 内置数据类型(基本数据类型)2. 自定义数据类型显示类型转换(强制类型转换)1. static_cast2. const_cast3. dynamic_cast4. reinterpret_cast总结C++ 类型转换主要分为两种:隐式类型转换 和 显示类型转换(强制类型转换)。隐式类型转换所谓隐式类型转换,是指不需要用户干预,编译器默认进行的类型转换行为(很多时候用户可能不知道到底进行了哪些转换)隐式类型转换一般分为两种:内置数据类型、自定义数据类型。1. 内置数据转载 2020-08-16 08:03:27 · 340 阅读 · 0 评论 -
详解 c++ 的 const_cast 转换
强制类型转换(const_cast)【1】const_cast 的作用一、常量指针 被强转为 非常量指针,且仍然指向原来的对象;二、常量引用 被强转为 非常量引用,且仍然指向原来的对象;三、常量对象 被强转为 非常量对象。【2】示例代码#include <iostream>using namespace std;class A{public: int num; A(int val = 100) : num(val) {} ~A(){}};vo转载 2020-08-15 21:05:15 · 2726 阅读 · 0 评论 -
详解 C++ 对象模型
文章目录何为 C++ 对象模型?基本 C++ 对象模型C++对象模型中加入单继承1. 无重写的单继承2. 有重写的单继承C++ 对象模型中加入多继承C++ 对象模型中加入虚继承1. 简单虚继承(无重复继承情况)2. 菱形继承(含重复继承、多继承情况)如何访问成员?多态如何实现?何为 C++ 对象模型?C++ 对象模型可以概括为以下两个部分语言中直接支持面向对象程序设计的部分对于各种支持的底层实现机制语言中直接支持面向程序设计的部分,如构造函数、析构函数、虚函数、继承(单继承,多继承,虚继承转载 2020-08-09 09:39:53 · 2836 阅读 · 2 评论 -
超级详细的 C++ const 全面总结
文章目录花絮一、const 作用二、const 的使用1. 定义常量2. 指针使用 const3. 函数使用 const4. 类相关 const三、将 const 类型转换成非 const 类型四、使用 const 的一些建议五、补充重要说明花絮C++ 中的 const 关键字的用法非常灵活,而使用 const 将大大改善程序的健壮性const 是 C++ 中常见的类型修饰符,常类型是指使用类型修饰符 const 说明的类型,常类型的变量或对象的值是不能被更新的一、const 作用1.原创 2020-08-04 21:17:18 · 2416 阅读 · 0 评论 -
史上最详细的C++函数重载机制
文章目录函数重载1. 例子引入(现象)1.1 什么是函数重载(what)?1.2 为什么需要函数重载(why)?2. 编译器如何解决命名冲突的?3. 重载函数的调用匹配4. 编译器是如何让解析重载函数调用的?4.1 根据函数名确定候选函数集4.2 确定可用函数4.3 确定最佳匹配函数5. 总结附录:一种C++函数重载机制函数重载 ——每个现象后面都隐藏一个本质,关键在于我们是否去挖掘[前言]函数重载的重要性不言而明,但是你知道 C++ 函数重载是如何实现的吗?这个可以分为下面两个问题声明转载 2020-08-03 19:24:58 · 6543 阅读 · 2 评论 -
C++ STL基础笔试面试总结
1. STL六大组件仿函数,算法,迭代器,空间配置器,容器,空间配接器STL的组成含义伪函数如果一个类将 () 运算符重载为成员函数,这个类就称为函数对象类,这个类的对象就是函数对象(又称仿函数)算法STL 提供了非常多(大约100个)的数据结构算法,它们都被设计成一个个的模板函数,这些函数在 std 命名空间中定义,其中大部分算法都包含在头文件 中,少部分在头文件 中迭代器在 C++ STL 中,对容器中数据的读和写,是通过迭代器完成的,扮演者容器和算法之.原创 2020-08-02 09:38:26 · 331 阅读 · 0 评论 -
C++之深入理解指针
深入理解指针#include <iostream>#include <cstring>using namespace std;/*【数组名的意义】sizeof(数组名):计算的是整个数组大小&数组名:这里的数组名表示整个数组,取出的是整个数组的大小除此之外所有的数组名表示首元素地址strlen:只能求字符数组的长度*///一维数组void TestArray(){ int a[] = {1, 2, 3 , 4}; cout <原创 2020-07-22 19:23:49 · 104 阅读 · 0 评论