C++
文章平均质量分 75
行仔ovo
这个作者很懒,什么都没留下…
展开
-
OpenCV - Universal intrinsics 统一指令集
文章目录0. OpenCV版本1. 寄存器数据类型2. 方法3. 说明0. OpenCV版本选用的4.5.2版本,因为4.5.1版本第一次加入对avx256指令集的相关代码,担心不稳定,但是此时4.5.3又下载太慢,所以用了4.5.2。1. 寄存器数据类型2. 方法3. 说明......原创 2022-07-22 11:36:49 · 1566 阅读 · 2 评论 -
C++学习记录 - 进程创建
文章目录1. 创建进程2. exec函数族2.1 execlp2.2 execl3. 回收子进程3.1 wait函数3.2 waitpid函数4. 进程间通信(IPC)4.1 管道(PIPE)4.2 有名管道(FIFO)4.3 共享映射区(共享内存)4.4 本地套接字1. 创建进程c/c++中,使用fork()函数创建一个进程。pid_t pid = fork();子进程自fork()以后开始执行。fork()函数返回值,为pid_t类型,父子进程依靠pid的不同进行区分。如果fork失败,pi原创 2022-05-03 12:02:48 · 5462 阅读 · 0 评论 -
C++学习记录 - 构造函数与析构函数部分知识点
文章目录1. 编译器默认添加的函数2. 如何禁止拷贝构造函数、拷贝赋值函数?3. virtual 修饰的析构函数4. 纯虚函数与纯虚析构函数的区别1. 编译器默认添加的函数自写类的时候,如果没有显式的写出来构造函数、析构函数、拷贝构造函数、拷贝赋值函数。如果程序中这些函数被需要(被调用),编译器就会默认的创建这些函数。默认的构造函数和析构函数都是空实现的。默认的拷贝构造函数和拷贝赋值函数都是浅拷贝。如果有自己写的一个或者多个构造函数(不管有无参数),那么编译器都不会再添加默认的构造函数。2.原创 2022-04-26 11:48:13 · 190 阅读 · 0 评论 -
C++学习记录 - operator new、new operator、delete等
文章目录0. placement new0.1 重载placement new1. new operator2. delete operator3. operator new4. operator delete5. new 做了哪些事情?6. array new 与 array delete7. delete[ ] 为什么能够释放数组?0. placement new即 原地构造。用法:int *p = new int(10); // new operatornew(p) int(1000);原创 2021-08-20 22:23:55 · 313 阅读 · 0 评论 -
C++学习记录 - 类型转换
文章目录0. 必要性1. const_cast2. static_cast3. dynamic_cast4. interpret_cast0. 必要性C语言中的类型转换,没有安全检查,安全性需要程序猿来保证,C++提供了4种类型转换的方法,在一定程度上保证转换的安全性。重点是 dynamic_cast1. const_cast仅用于去除类型的const属性,也是四种类型转换中,唯一可以去掉const限制的方法。只能转换 指针、引用、this(在类内的时候用)。2. static_cast原创 2021-08-02 21:07:40 · 144 阅读 · 0 评论 -
C++学习记录 - 智能指针
文章目录1. 什么是智能指针2. auto_ptr3. unique_ptr4. shared_ptr5. weak_ptr1. 什么是智能指针简而言之,为了更安全的使用指针。实现方式简单来说,就是用一个模板类把一般的指针包装起来。用这个类来维护内部指针的释放操作。std中有四种智能指针。auto_ptr(已弃用)unique_ptrshared_ptrweak_ptr2. auto_ptr比较简单的智能指针,实现逻辑如下代码。实现的原则是:内存空间只能由一个指针所拥有。存在的问原创 2021-07-10 22:26:24 · 250 阅读 · 6 评论 -
C++学习记录 - 内存对齐
为什么要内存对齐?经过内存对齐之后,一个最最主要的原因是可以使得CPU的内存访问速度大大提升。 内存空间按照byte划分,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。用空间换时间!CPU在读内存的时候是n个为一组的方式去读。假设此时4个字节为一组去读。内存对齐之后的内存空间如下图:这样的话,只需要读内存2次。先从第一组读,然后扣除原创 2021-06-25 21:26:00 · 87 阅读 · 0 评论 -
C++学习记录 - 常量折叠
转自:https://www.cnblogs.com/stemon/p/4406824.html0.前言前几天女票问了我一个阿里的面试题,是有关C++语言的const常量的,其实她一提出来我就知道考察的点了:肯定是const常量的内存不是分配在read-only的存储区的,const常量的内存分配区是很普通的栈或者全局区域。也就是说const常量只是编译器在编译的时候做检查,根本不存在什么read-only的区域。所以说C++的const常量和常量字符串是不同的,常量字符串是存储在read-only的转载 2021-06-24 09:09:56 · 593 阅读 · 0 评论 -
C++学习记录 - 模板
文章目录0. 模板1. 函数模板注意事项2. 普通函数与函数模板对比2.1 区别2.2 调用规则3. 模板的局限性0. 模板C++中除了有面向对象的思想,还有泛型编程的思想,泛型编程利用的主要技术就是模板。C++中两种模板:函数模板、类模板语法:template<typename T>函数声明或定义含义:template 固定的,声明创建模板typename 表明后边的T是一种数据类型,也可以用class代替T 类似形参,任意的合法字符都可以,习惯上用 T模板有两原创 2021-02-20 14:25:23 · 105 阅读 · 0 评论 -
C++学习记录 - 多态
文章目录0. 基本语法1. 多态的原理2. 纯虚函数和抽象类3. 虚析构和纯虚析构0. 基本语法多态是面向对象的三大特性之一。多态:多态即调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。多态分为两类静态多态:函数重载 和 运算符重载 属于静态多态,是对函数名的复用。动态多态:派生类和虚函数实现运行时多态。静态多态的函数地址早绑定, 编译阶段确定函数地址。动态多态的函数地址晚绑定, 运行阶段确定函数地址。引入虚函数,就是为了通过函数重写实现多态的效果。动态多态需要原创 2021-02-17 17:14:03 · 104 阅读 · 0 评论 -
C++学习记录 - 继承
文章目录0. 基本语法1. 继承方式2. 继承中的对象模型3. 父类和子类的构造和析构顺序4. 同名成员的处理5. 多继承6. 菱形(钻石)继承0. 基本语法继承是面向对象的三大特性之一。class 子类 : 继承方式 父类从父类继承来的表现其共性,而新增的成员表现其个性。1. 继承方式三种继承方式publicprotectedprivate父类中的private成员,无论哪种方式都不能访问。2. 继承中的对象模型问题:从父类继承来的成员,哪些属于子类对象中?输出子类的原创 2021-02-17 14:56:59 · 106 阅读 · 0 评论 -
C++学习记录 - 类的相关内容
1. 类的访问说明符public:可以被该类中的函数、子类的函数、友元函数访问,也可以由该类的对象访问;protected:可以被该类中的函数、子类的函数、友元函数访问,但不可以由该类的对象访问;private:可以被该类中的函数、友元函数访问,但不可以由子类的函数、该类的对象、访问。public和protected的区别就在于类的一个对象本身可不可以调用。2. 友元对于不完全开放的protected和private中的成员,可以通过在public中进行友元函数(类)权限声明,为该函数(类)原创 2021-02-17 14:56:45 · 139 阅读 · 0 评论 -
C++学习记录 - 引用
0. 引用的本质本质:引用在C++内部的实现是一个指针常量(* const)。const就限制了必须要初始化,并且初始化以后不可更改。它不是一个对象,所以没有引用的引用。1. 注意事项引用必须初始化引用在初始化后不可修改2. 引用做函数参数与指针传递相似3. 引用做函数返回值与指针一样,不要返回局部变量(栈区空间)的引用函数的调用可以作为左值int& test(){ static int a = 10; return a;}int main(){ int原创 2021-02-16 19:25:59 · 78 阅读 · 0 评论 -
c++学习记录 - 常量指针和指针常量
两个比较容易混淆的概念。指针常量:一个指针是常量。常量指针:指向常量或变量的指针,无法通过它修改目标对象值。指针常量重点在“常量”,这是一个常量,也是一个指针,也就是说,这个指针一旦指向了一个地址,那么它就不可以再指向别的地址空间。常量指针重点在“指针”,这是一个用const修饰的指针,它既可以指向常量,也可以指向变量。所谓的“常量”指针或者“常量”引用,不过是指针或引用“自以为是”罢了,只是不能通过该指针或引用来修改对象的值。code: int a = 15; const int *p原创 2021-02-15 22:05:41 · 117 阅读 · 0 评论 -
C++学习记录 - Lambda表达式(匿名函数)
Lambda表达式Lambda表达式形式[capture](params) -> return-type{ function body}说明capture需要捕获外部的变量如果这个匿名函数需要调用本匿名函数以外的变量,那么就需要在这个[ ] 中进行捕获,捕获包括捕获的变量名称和捕获的方式(值和引用)。例如:[ ] 表示不捕获外部的任何变量[=] 表示捕获外部的所有变量,是以值的方式捕获(不可修改)。[&] 表示捕获外部的所有变量,是以引用的方式捕获(可修改)。[原创 2021-01-28 17:27:47 · 121 阅读 · 0 评论 -
C++学习记录 - 重写 重载 重构三者区别
重构重构是对程序内部的架构的调整。重构强调的是在不改变"软件外部可观察的行为"前提下,对内部结构进行调整,使得从程序的外部功能上看,没有任何变化。如下例子:重构前代码如下:#include <iostream>class child{private:public: child(){}; void func(){ std::cout << 123 << std::endl; }};int main(int原创 2021-01-28 12:33:10 · 2161 阅读 · 0 评论