
C++ programing langua
文章平均质量分 79
凛音Rinne
备考暂停更新,会更新考研相关
展开
-
【C++】多态
文章目录一、多态定义1. 构成条件2. 虚函数3. 虚函数重写的两个例外协变析构函数的重写二、什么情况下类不能被继承【C++98解决方式:private】【C++11解决方式:final】三、override检查重写四、抽象类五、多态的原理1. 没有继承的虚函数表2. 单继承中虚函数表3. 多态当中的虚函数表4. 不能直接给类切片的原因5. 同类型的对象,虚函数表一样6. private不限制虚函数表一、多态定义1. 构成条件多态:多种形式静态的多态:函数重载,原理是编译时实现动态的多态:必原创 2022-04-24 20:49:05 · 1599 阅读 · 1 评论 -
【C++】继承
文章目录一、继承的概念1. 继承的定义2. 继承的赋值兼容3. 继承的作用域4. 派生类的默认成员函数5. 继承和友元6. 继承和静态成员7. 菱形继承和菱形虚拟继承虚继承解决一、继承的概念1. 继承的定义保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类继承规则(私密程度:private > protected > public)2. 继承的赋值兼容切割、切片:子类的值,地址,引用都可以赋值给父类这里不是类型转换,而是语法支持,中间不会产生临时变原创 2022-04-20 23:00:52 · 776 阅读 · 1 评论 -
【Linux】进程控制(进程退出和进程等待)
文章目录一、进程退出1. 进程退出场景2. 查看每个退出码所传递的信息3. 终止进程二、进程等待1. wait2. waitpid3. status参数4. options参数三、进程的程序替换1. execl进程替换一、进程退出main函数return0是为什么?main函数返回的是进程的退出码输出最近一次进程的退出码echo $?1. 进程退出场景代码运行完毕,结果正确——————,结果不正确代码异常终止(程序崩溃)2. 查看每个退出码所传递的信息strerr原创 2022-04-17 09:35:16 · 3419 阅读 · 1 评论 -
【C++】I/O流文件字符串读写
文章目录一、operator bool二、C++中的文件读写1. fstream头文件1. ofstream如何写?2. ifstream如果是读取,同理3. 文本读写4. 读取自定义类型三、C++中的字符串读写1. sstream头文件2. ostringstream3. istringstream一、operator boolwhile()里面可以是指针,也可以是整型这里面用了一个operator bool的类型#include <iostream>using namespace原创 2022-04-15 20:43:12 · 2363 阅读 · 1 评论 -
【C++】模板特化
文章目录一、非类型模板参数二、模板特化1. 全特化2. 偏特化三、模板分离编译一、非类型模板参数非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用(这里必须是整型常量)//非类型模板参数template<class T, size_t N = 10>class MyStack{private: int _n[N];};void test(){ }二、模板特化必须要先有一个基础的函数模板关键字tem原创 2022-04-13 20:41:06 · 238 阅读 · 1 评论 -
【C++】优先级队列priority_queue模拟实现
文章目录一、介绍1. 使用二、模拟实现1. 构造函数2. 进队出队3. 向上调整向下调整4. 适配器的迭代器区间构造5. 仿函数一、介绍默认适配器是vector整个数据结构是一个堆1. 使用默认大的优先级高,是一个大堆#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <queue>#include <vector>using namespace std;int mai原创 2022-04-07 15:54:22 · 604 阅读 · 1 评论 -
【C++】list的使用和模拟实现
文章目录一、list的使用1. 介绍2. 迭代器3. remove查找移除4. 删除重复5. 排序6. 逆序7. 粘合二、模拟实现list1. 准备框架2. 构造/拷贝构造/赋值重载3. push_back4. 迭代器5. 迭代器优化6. 流提取对于自定义类型不支持问题7. 插入相关函数8. 析构函数9. 反向迭代器三、list和vector、string作对比一、list的使用1. 介绍双向链表+双向迭代器2. 迭代器因为是双向迭代器,试试正反遍历正向遍历#define _CRT原创 2022-03-31 18:50:57 · 2504 阅读 · 0 评论 -
【C++】vector的使用和模拟实现
文章目录一、vector 定义二、vector使用1. 初始化2. 插入3. 遍历4. 重新分配容量5. 查找6. 清除三、vector模拟实现参数构造函数析构函数拷贝构造遍历[]始末位置/容量/大小扩容插入push_back插入insert删除erase一、vector 定义vector是表示可变大小数组的序列容器本质其实就是一个动态的顺序表二、vector使用1. 初始化#define _CRT_SECURE_NO_WARNINGS#include <iostream>原创 2022-03-25 17:31:20 · 1653 阅读 · 1 评论 -
【C++】模拟实现string常用接口
文章目录模拟实现string1. 构造+析构+拷贝构造函数2. 赋值重载=3. c_str 返回字符串地址4. size 字符串长度5. 迭代器6. 增7. 删8. 查9. 改模拟实现string1. 构造+析构+拷贝构造函数注意事项:因为c++模板库里面有string这个类,以防重名,给自己模拟的string加上namespace在构造函数,需要单独重载一个应对传参传空的构造函数这里因为初始化列表有一个顺序问题,以防出现问题,还是在大括号里面写以下代码进行了三次优化#include &原创 2022-03-09 22:14:03 · 1126 阅读 · 0 评论 -
【C++】string常用接口
文章目录一、STL二、string1. 定义2. 常用接口构造函数:字符串长度:申请空间大小:清除数据:字符串数组:字符:遍历字符串:开空间:打印字符串:查找字符串:一、STLSTL(standard template libaray-标准模板库): 是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。二、string1. 定义string是一个字符串的模板类int main(){ string s1("hello");//构造对象原创 2022-03-06 14:39:09 · 1307 阅读 · 1 评论 -
【C++】模板函数 + 模板类
文章目录一、函数模板1. 定义模板类型2. 函数模板实例化二、类模板1. 类模板定义2. 类模板实例化关于一些函数,因为类型不同,需要写多个函数来满足类型不同带来的麻烦一、函数模板1. 定义模板类型typename是用来定义模板参数关键字,也可以使用class(切记:不能使用struct代替class)template<typename T> //模板参数列表 - 参数类型T& Add(T& x, T& y) //函数参数列表 - 参数对象原创 2022-03-04 00:00:00 · 754 阅读 · 3 评论 -
【C++】动态内存管理 + new操作符
C++动态内存管理一、引言一道题目复习知识点int globalVar = 1;static int staticGlobalVar = 1;void Test(){ static int staticVar = 1; int localVar = 1; int num1[10] = {1, 2, 3, 4}; char char2[] = "abcd";//这里char2是指针,数组的指针指向数组第一个元素地址,char2数组是,把一个常量字符串拷贝过去,*char2是首元素,是数原创 2022-02-24 23:05:31 · 904 阅读 · 0 评论 -
【C++】static成员函数 + 友元函数
文章目录一、static成员二、友元1. 友元函数2. 友元类3. 内部类(与友元类无关)一、static成员声明为static的类成员称为类的静态成员用static修饰的成员变量,称之为静态成员变量用static修饰的成员函数,称之为静态成员函数静态的成员变量一定要在类外进行初始化#include <iostream>using namespace std;class A{public: //构造函数 A(int a = 0) :_a(a)原创 2022-02-23 10:28:25 · 1158 阅读 · 0 评论 -
【C++】初始化列表 + explicit关键字
文章目录一、初始化列表1. 初始化列表定义2. 初始化列表适用范围3. 推荐使用初始化列表初始化对象4. 初始化列表按照声明顺序定义二、explicit关键字一、初始化列表1. 初始化列表定义#include <iostream>using namespace std;class Date{public: //初始化列表 Date(int year, int month, int day) :_year(year), _month(month), _day(day原创 2022-02-19 12:26:12 · 661 阅读 · 2 评论 -
【C++】赋值运算符重载
文章目录赋值运算符重载1. 运算符重载2. 赋值运算符重载赋值运算符重载默认情况下C++不支持自定义对象类型使用运算符1. 运算符重载函数名:operator + 运算符号返回值:根据函数具体分析,如果是>/<,可能是bool,如果是-/+,可能是int参数:操作符有几个操作数,参数就有几个例子:比较年月日bool operator>(const Date& d1, const Date& d2){ if (d1._year > d2._year)原创 2022-02-10 21:08:29 · 2630 阅读 · 1 评论 -
【C++】类的默认构造函数
类的默认成员函数文章目录类的默认成员函数1. 构造函数2. 默认构造函数1. 构造函数初始化类函数名与类名相同无返回值对象实例化时编译器自动调用对应的构造函数构造函数可以重载我们测试一下对象实例化时编译器自动调用对应的构造函数#include <iostream>using namespace std;class Date{public: //含参的构造函数 Date(int year = 0, int month = 0, int day = 0)原创 2022-01-28 16:17:35 · 3093 阅读 · 1 评论 -
【C++】类基础 + this指针
一、面向对象与面向过程C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 关注函数/方法的实现C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。 关注类的设计与关系二、类1. struct 结构体同时也是类包含c语言中结构体的含义struct Data{ int ID; char name;};int main(){ struct Data d2; //Data d1原创 2022-01-21 22:55:21 · 643 阅读 · 1 评论 -
【C++】auto关键字 + 范围for + nullptr
文章目录一、auto关键字二、范围for三、nullptr一、auto关键字早期auto修饰的变量有自动存储器功能,但其他int之类的的类型也有此功能(C++98)所以在C++11中 ,auto能自动识别变量的类型#include <iostream>using namespace std;auto num(){ return 1;}int main(){ auto x = 1; auto y = 'a'; auto z = num(); auto&原创 2022-01-16 23:07:16 · 510 阅读 · 1 评论 -
【C++】内联函数inline
内联函数文章目录内联函数1. inline概念2. 性质3. 与宏作比较在C语言中,我们觉得一个小函数重复调用函数栈帧,函数栈帧中保存一些寄存器,之后又销毁,这些都是有消耗的所以C语言引入 #define宏#define ADD(x, y) ((x) + (y))1. inline概念C++中引入内联函数以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销, 内联函数提升程序运行的效率。#include <iostream&g原创 2022-01-15 10:38:54 · 405 阅读 · 1 评论 -
【C++】extern “C“
extern “C”1. C++调用C程序不能调用程序,程序只能调用库 (静态库或动态库)如果想要实现C++去调用C创建工程,找到静态库将.c文件的代码写完之后,运行程序,会生成.lib文件注意:这里是静态库,不需要写main函数,因为不是运行程序切换到 .cpp文件一般调用库使用 #include#include "../.". 一个个点号表示当前文件.. 两个点号表示当前文件的上一个文件找到 .h文件,其实就是包含一个头文件,就是这个头文件可以不在当前目录或者原创 2021-12-10 18:35:51 · 732 阅读 · 20 评论 -
【C++】引用
文章目录引用1. 概念2. 性质3. 引用作参数4. 引用构成重载5. 引用作返回值6. 传值、传引用作为返回值类型或者参数的性能比较7. 常引用8. 引用和指针的区别引用1. 概念引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它 引用的变量共用同一块内存空间。引用必须初始化int a = 1;int& b = a;一个变量可以有多个引用int a = 1;int& b = a;int& c = a;原创 2021-12-08 22:42:45 · 752 阅读 · 17 评论 -
【C++】缺省参数 + 函数重载
文章目录一、缺省参数1. 概念2. 分类3. 缺省参数的使用二、函数重载1. 参数类型不同2. 参数个数不同3. 参数顺序不同4. 函数重载的原理一、缺省参数1. 概念所谓缺省参数,顾名思义,就是在声明函数的某个参数的时候为之指定一个默认值,在调用该函数的时候如果采用该默认值,你就无须指定该参数。缺省值必须是常数或者是全局变量(静态区)#include <iostream>using namespace std;void print(int x = 20){ cout原创 2021-12-04 18:23:42 · 1701 阅读 · 18 评论 -
【C++】命名空间 + 输入输出流
最近在准备考试,就随便写点吧文章目录命名空间1. namespace2. 作用域限定符 ::3. 命名空间的使用4. 命名空间嵌套使用5. 命名空间命名重复命名空间c语言中如果出现#include <stdio.h>#include <stdlib.h>int rand = 0;int main(){ printf("%d", rand); return 0;}则会出现重命名的问题运行之后结果如上图同一作用域中不能出.原创 2021-12-01 23:27:19 · 1306 阅读 · 20 评论