C++
文章平均质量分 80
C++ blogs
代码被吃掉了
凡是过往 皆为序章
展开
-
【C++】多态入门
多态虚函数抽象类原创 2021-02-18 19:03:13 · 148 阅读 · 0 评论 -
【C++】一篇文章搞定 C++内存管理
1. CPP程序的内存模型2. CPP中动态内存管理方式2.1 new/delete2.2 new[]/delete[]3. 分配与释放不配套使用的后果3.1 new与delete[]3.2 new[]与delete3.3 malloc与delete3.4 malloc与delete[]3.5 new与free3.6 new[]与free4. new与delete的底层实现解析5. new与delete原理总结5.1 内置数据类型5.2 自定义数据类型6. 内存块的组织方式解析原创 2021-01-27 15:00:37 · 1166 阅读 · 5 评论 -
【C++】C++日期和时间操作简介
tm结构体C++时间和日期相关API原创 2021-02-25 17:39:29 · 1249 阅读 · 2 评论 -
【C++】继承入门
继承菱形继承原创 2021-02-18 19:00:04 · 151 阅读 · 0 评论 -
【C++】多态进阶
虚函数表动态绑定静态绑定原创 2021-02-18 19:06:47 · 2026 阅读 · 7 评论 -
【C++】Lambda 表达式详解
Lambda表达式原创 2021-07-04 20:58:03 · 4175 阅读 · 5 评论 -
【C++】模板进阶
非类型模板参数类模板特化分离编译模板总结原创 2021-02-18 18:57:51 · 1050 阅读 · 1 评论 -
【C++】模板入门
函数模板类模板原创 2021-02-18 18:55:00 · 202 阅读 · 1 评论 -
【C++】解析stack和queue底层数据结构 - - - - deque
stack和queue底层数据结构解析deque源码解析原创 2021-02-07 14:05:00 · 3307 阅读 · 5 评论 -
【C++】map_multimap 容器的基操
map multimap原创 2021-02-18 18:20:31 · 450 阅读 · 2 评论 -
【C++】deque 容器的基操
deque 容器deque容器基本概念功能:双端队列,可以对头端和尾端进行删除和插入操作deque和vector区别:vector对于头部的插入删除效率低,数据量越大,效率越低;deque对头部的插入删除效率较高vector访问元素时的速度比deque快deque内部工作原理:deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据中控器维护的时每个缓冲区的地址,使得使用deque时像一片连续的内存空间deque构造函数/*构造函数原创 2020-08-22 21:46:27 · 140 阅读 · 2 评论 -
【C++】priority_queue容器的基操
priority_queue的底层结构介绍priority_queue成员函数介绍priority_queue模拟实现原创 2021-02-05 16:39:47 · 188 阅读 · 4 评论 -
【STL】模拟实现STL中set容器
模拟实现STL中set容器原创 2021-03-01 22:48:28 · 221 阅读 · 2 评论 -
【STL】模拟实现STL中map容器
模拟实现STL中map容器原创 2021-03-01 22:46:54 · 1052 阅读 · 3 评论 -
【C++】一篇文章加深对this指针的理解
文章目录this指针什么是this指针?验证编译器暗地中将本对象地址传入函数this指针特点this指针的应用场景this指针什么是this指针?this:是一个指针,这个指针中保存的是当前对象的地址,指向本对象作用域:非静态成员函数内部用途:当类的非static成员函数访问非static成员变量时,编译器会自动将对象本身的地址作为一个隐含的形参传给函数(也就是说:即使你没有显式的将本对象地址传入函数中,编译器在编译的时候也会自动将本对象地址传给函数),访问各个成员均可以通过this进行验证原创 2020-10-24 17:54:09 · 411 阅读 · 0 评论 -
【C++】一篇文章搞定引用进阶
文章目录引用进阶引用的数据类型不同时的特殊情况巧用引用使代码简化巧用引用代替指针引用作为返回值出现的奇怪现象经典面试题:引用和指针的区别?引用进阶引用的数据类型不同时的特殊情况看下面代码,观察情况想一想?#include <iostream>using namespace std;int main(){ double a = 3.1415926; const int& ra = a; system("pause"); return 0原创 2020-10-05 13:16:36 · 204 阅读 · 2 评论 -
【C++】一篇文章搞懂为什么CPP支持函数重载而C不支持?
Windows操作系统下VS编译C文件#include <stdio.h>#include <Windows.h>double add(double a, double b);int main(){ add(1.0, 2.0); system("pause"); return 0;}这段代码编译可以通过,但是链接通过不了报错:错误 2 error LNK2019: 无法解析的外部符号 _add,该符号在函数 _main 中被引原创 2020-10-03 17:47:57 · 1164 阅读 · 4 评论 -
【C++】set/multiset 容器的基操
set/multiset 容器set基本概念所有元素都会在插入时自动被排序set/multiset属于关联式容器,底层结构是用二叉树实现set个multiset区别:set不允许容器中有重复元素multiset允许容器中有重复元素set构造和赋值/*set构造和赋值 有序不可重复 set<T> name; 默认构造函数 set(const set& name); 拷贝构造函数 set& operator=(const set& n原创 2020-08-25 22:24:41 · 170 阅读 · 0 评论 -
【C++】list 容器的基操
list 容器基本概念功能:将数据进行链式存储链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的链表由结点组成结点由数据域和指针域组成list的底层是一个双向循环链表list中的迭代器只支持前移和后移,属于双向迭代器list的优点:采用动态内存分配,不会产生空间浪费或溢出链表执行插入和删除操作方便,无需移动大量元素list的缺点:链表有一个额外的指针域耗费空间,遍历时耗费时间插入和删除操作不会导致原迭代器失效,这原创 2020-08-22 21:44:39 · 156 阅读 · 0 评论 -
【C++】queue 容器的基操
queue 容器基本概念概念:Queue是一种先进先出(FIFO)的数据结构,它有两个出口常用接口/*构造函数 queue<T> name; 默认构造函数 queue(const queue& name); 拷贝构造函数赋值操作 queue& operator=(const queue& name); 重载=运算符数据存取 push(elem); 尾插 pop(); 头删原创 2020-08-22 21:43:10 · 138 阅读 · 0 评论 -
【C++】stack 容器的基操
stack 容器基本概念概念:stack是一种先进后出(FILO)的数据结构,它只有一个出口。由于栈只有栈顶可以对外界访问,所以栈不可以遍历常用接口/*构造函数: stack<T> name; stack<T>(const stack& name); 拷贝构造函数赋值操作: stack& operator=(const stack& name);数据存取: push(elem); 进栈原创 2020-08-22 21:41:47 · 161 阅读 · 0 评论 -
【C++】vector 容器的基操
vector 容器vector基本概念功能:vector数据结构和数组相似,称为单端数组与数组区别:数组是静态的,vector是可以动态扩展的动态扩展:寻找更大的空间,将原数据拷贝进新空间,释放原空间,而不是在原空间之后续接内存空间vector的迭代器是支持随机访问的迭代器vector构造函数/*vector构造函数 vector<T> v; //默认构造函数 vector(v.begin(),v.end());原创 2020-08-22 21:40:55 · 204 阅读 · 0 评论 -
【C++】String 容器的基操
String 容器string 基本概念stirng是C++风格的字符串,而string本质上是一个类char*是C风格的字符串string和char*的区别:char* 是一个指针string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器string的特点:string类内部封装了很多成员方法,如:find、copy、delete、replace、insertstring管理char*所分配的内存,无需担心复制越界或取值越界问题S原创 2020-08-20 16:33:27 · 144 阅读 · 0 评论 -
【C++总复习】 第七章----输入输出流
1.标准输出流1.1 cout、cerr、clog流coutcout是console output的缩写,意为在控制台的输出cout<<"Hello World!!"<<endl;输出:图解cout输出原理:cerrcerr是console error的缩写,意为“在控制台显示出错信息”用法与cout类似 cerr<<"Wrong input!!"<<endl;输出:clogclog是console log的缩写原创 2020-06-06 15:17:12 · 657 阅读 · 0 评论 -
【C++总复习】 第六章----多态性与虚函数
1.多态性多态性定义:向不同对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息,就是调用函数,不同的行为就是指不同的实现,即执行不相同的函数。例如:老师给你和你妈妈(不同对象)同时发送了你的期末考试成绩(消息),对于这一信息,你在思考为何会错(可能你在思考回家会不会挨打),你妈妈在思考等你回家怎么揍你(不同行为)多态的另一种理解:编译时一种状态,运行时一种状态程序的多态性:编译时多态:又叫静态多态,程序在编译阶段就能决定调用哪个原创 2020-06-05 11:58:45 · 480 阅读 · 0 评论 -
【C++总复习】 第5章----继承与派生
1.继承继承:在一个已经存在的类的基础上建立一个新的类。已存在的类称为父类、基类;新建立的类称为子类、派生类。一个派生类只从一个基类派生称为单继承一个派生类有两个或多个基类称为多重继承图解单继承图解多继承- 派生类是基类的具体化,而基类则是派生类的抽象从上图中可以看出:1.小学生、中学生、大学生、研究生、留学生是学生的具体化,都是从学生的共性基础上加上某些特点形成的子类2.学生则是各类学生共性的提取形成的一个抽象的类3.基类综合了派生类的公共特征,派生类则在基类的基础上增加某些特性原创 2020-06-04 14:41:14 · 828 阅读 · 0 评论 -
【C++总复习】 第4章----运算符重载
说在前面:C++将C语言中的左移运算符(<<)进行了运算符重载,变成了与流对象cout配合使用的流插入运算符;将右移运算符(>>)进行了运算符重载,变成了与流对象cin配合使用的流提取运算符,这就是利用了运算符重载。运算符重载格式:函数类型 operator 运算符名称(形参表){ 对运算符重载处理 }例如:A operator + (A &);重载了类A的“+”运算符“operator +“重载了运算符”+”1.双目运算符重载1.1 opera.原创 2020-06-03 16:22:32 · 847 阅读 · 0 评论 -
【C++总复习】第3章----类和对象的正确使用
1.构造函数对象初始化:创建对象时,给变量第一次赋值称为对象初始化。构造函数:处理对象初始化问题;构造函数是一种成员函数,无需用户调用,而是建立对象时自动调用匹配的构造函数。构造函数的名字与它所属的类名相同,被声明为公有函数,且没有任何类型的返回值。允许为内联函数、重载函数、带默认形参值的函数。1.1无参数的构造函数无参数构造函数就是不给构造函数传参无参构造函数可以不写,系统会默认给出无参构造函数class Student{private: int age; int num;原创 2020-06-01 21:01:11 · 1224 阅读 · 0 评论 -
【C++总复习】第2章----类和对象的特性
1.面向对象的程序设计1.1对象客观世界中任何一个事物都可以看成一个对象(object),任何一个对象都具有属性和行为这两个要素,对象可以根据外界给的信息进行相应的操作,一个对象一般由一组属性和一组行为构成。例如:将本人作为一个对象时有两个要素:一是静态特征,比如我有身高、体重、三围等,这些统称为属性;二是动态特征,比如我会跑步、吃饭、打球等,这些统称为行为。如果我在学习,我妈喊了一句:吃饭了!我便执行吃饭这种行为,其中我妈的这句话被称为消息消息会要求对象实现某一行为(功能)在C++中,每个对原创 2020-05-31 13:36:55 · 824 阅读 · 0 评论 -
【谭浩强C++面向对象程序设计(第2版)总复习】第1章----C++对于C的扩展
学校C++课程总复习原创 2020-05-30 13:06:57 · 703 阅读 · 0 评论 -
C++学习篇之三(字符串)
字符串变量string是C++标准库中声明的一个字符串类定义字符串变量包含头文件 #include <string>定义字符串变量时无需指定长度string str1;string str2 = "china";可对字符串中某一字符进行操作string word = "then";//word[0]='t' word[1]='h' //word[2]=...原创 2020-03-05 22:41:53 · 271 阅读 · 0 评论 -
C++学习篇之二(动态内存分配)
用new运算符实现动态内存分配1.第一种用法:给一个变量分配内存空间**P = new T;T是任意数据类型的名字,P是类型为T*的指针动态分配出一片大小为sizeof(T)字节的内存空间,并且将该内存空间起始地址赋值给P,例如:int *pn;pn = new int; //分配一个int大小的内存,起始地址赋值给pn*pn = 5; //通过指针间接访问上述内存地址并赋值2...原创 2020-03-05 21:25:32 · 299 阅读 · 0 评论 -
C++学习篇之一(输入输出流)
C++的输入输出C++语言中也没有专门的输入/输出语句C++中的I/O操作是通过一组标准I/O函数和I/O流来实现的。C++中把数据从一个对象到另一个对象的流动(传输操作)称作流。在C++中,流既可以表示数据从内存传送到某个载体或设备中,即输出流;也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。使用cout,cin,要包含头文件“iostream”用cout进行输出...原创 2020-03-02 15:26:54 · 479 阅读 · 0 评论 -
初识C++
初步认识C++1979年,贝尔实验室的本贾尼.斯特劳斯特卢普(Bjarne Stroustrup)博士接受一项工作,尝试分析UNIX的内核,他设计了一个可以运行的预处理程序,称之为“Cpre”,它为C语言加上了类似Simula语言的类机制。在这个过程中,斯特劳斯特卢普博士产生了创建一门新语言的想法。斯特劳斯特卢普博士借鉴了其他程序设计语言的优点,实践了编程界由来已久的“拿来主义”。例如:C++...原创 2020-03-01 12:14:56 · 254 阅读 · 0 评论