C++
不会算命的赵半仙
这个作者很懒,什么都没留下…
展开
-
【一天一个C++小知识】015:c++11线程创建的三种方法
1.用一个初始函数创建一个线程 注意c++在运行一个可执行程序的时候(创建了一个进程),会自动的创建一个主线程,这个主线程和进程同生共死,主线程结束,进程也就结束了。#include "pch.h"#include <iostream>#include<thread>void print1(){ cout << "print1_1线程执行" << endl; cout << "print1_2线程执行" <<原创 2021-05-11 07:04:54 · 339 阅读 · 1 评论 -
【一天一个C++小知识】014:C++中string与char*的区别
1.定义: string是STL当中的一个容器,对其进行了封装,所以操作起来非常方便。 char *是一个指针,可以指向一个字符串数组,至于这个数组可以在栈上分配,也可以在堆上分配,堆得话需要手动释放了。2.区别 string的内存管理是由系统处理,除非系统内存池用完,不然不会出现这种内存问题。 char *的内存管理由用户自己处理,很容易出现内存不足的问题。 char *s=“string"的内容是不可以改的;char s[10]=“string"的内容是可以改的。 当我们定义了原创 2021-05-08 20:03:15 · 193 阅读 · 0 评论 -
【一天一个C++小知识】012.C++11常用新特性汇总
1. 关键字及新语法1.1 auto关键字 auto并没有让C++成为弱类型语言,也没有弱化变量什么,只是使用auto的时候,编译器根据上下文情况,确定auto变量的真正类型。 auto在C++14中可以作为函数的返回值,因此auto AddTest(int a, int b)的定义是没问题的。 auto作为函数返回值时,只能用于定义函数,不能用于声明函数(编译无法通过)。但如果把实现写在头文件中,可以编译通过,因为编译器可以根据函数实现的返回值确定auto的真实类型。如果读者用过inline原创 2021-05-07 15:46:22 · 92 阅读 · 0 评论 -
【一天一个C++小知识】013.std:map-不存在的key查找其value
1、在map中,由key查找value时,首先要判断map中是否包含key。2、如果不检查,直接返回map[key],可能会出现意想不到的行为。如果map包含key,没有问题,如果map不包含key,使用下标有一个危险的副作用,会在map中插入一个key的元素,value取默认值,返回value。也就是说,map[key]不可能返回null。3、map提供了两种方式,查看是否包含key,m.count(key),m.find(key)。4、m.count(key):由于map不包含重复的key,因此m原创 2021-04-27 22:37:59 · 4826 阅读 · 0 评论 -
【一天一个C++小知识】010.malloc/free和new/delete
【一天一个C++小知识】010.malloc/free和new/delete原创 2021-04-25 22:31:23 · 165 阅读 · 0 评论 -
【一天一个C++小知识】009.C++面向对象
1. 结构化 v.s. 面向对象 结构化程序设计方法是一种模块化程序设计方法,解决问题时以功能为中心,一定的功能模块虽然也作用与特定的数据,但它们没有被封装在一起。 面向对象程序设计方法则是以对象为中心来解决问题,属于同种对象的属性和服务被抽象出来封装到一起。2. 面向对象方法的特定2.1. 数据抽象 类是一组相似对象的抽象描述,抽取了这些对象的共性组成一个共同的概念,而ADT是一组相似类的抽象,一个类是ADT的具体实现。2.2 封装 指软件的组成部分(模块、子程序、方法等)应互相独原创 2021-04-23 21:51:53 · 125 阅读 · 0 评论 -
【一天一个C++小知识】008.内联函数
1.宏中定义函数存在问题,它并不是真正的函数#define BAND(x) (((x) > 5 && *x) < 10) ? (x) : 0)int main(){ for (int i = 4; i < 11; i++){ int a = i; cout << "a = " << a << endl << '\t'; cout << "BAND(++a) = " << BAND(+原创 2021-04-23 21:51:34 · 98 阅读 · 0 评论 -
【一天一个C++小知识】007.C++中的struct、enum和union以及内存对齐与大小端问题
1. struct、enum、union三个关键字在C中定义比较麻烦,所以一般和typedef一块出现,而C++中则不用2. struct和union中可以定义函数,但是:2.1 struct和class用法完全相同,class有的功能它都用,唯一的区别在于当没有指定成员的访问权限时,struct中默认为public而class默认为private2.2 union也支持三种访问权限的设置,但是:2.2.1 union不支持继承2.2.2 union不能定义虚函数2.2.3 union和stru原创 2020-07-07 15:12:02 · 342 阅读 · 0 评论 -
【一天一个C++小知识】006. 浮点数在计算机内部的表示与转换
编写程序时,两个浮点数不能直接比较大小(无论单精度float双精度double),这是因为浮点数在计算机内部不能精确的表示。首先明确定点数和浮点数:定点数就是小数点位置固定不动的数,在计算机中,我们假设小数点在最前面,例如,001表示二进制小数0.001;10表示二进制小数0.10。这样任何小于1且不小于0的小数都可以用定点数来表示。浮点数就是小数点位置不固定的数,这样就需要一定的方法来表示浮点数。再看一下十进制小数和二进制小数的互相转换:十进制小数转二进制小数:小数部分乘以2,如果如果大于1,则记原创 2020-06-27 08:38:37 · 698 阅读 · 0 评论 -
【一天一个C++小知识】005. C++中的句柄类(智能指针)
句柄类作用主要有两个,一是支持面向对象编程,实现多态性质;二是减少头文件的编译依赖关系,让文件间的编译更加独立。 句柄类存储和管理基类指针,指针既可以指向基类类型对象又可以指向派生类型对象。用户通过句柄类访问继承层次的操作,用户可以获得动态行为,同时能够确保自动正确的销毁动态分配的对象,防止内存泄露。C++不能通过对象支持多态,而必须使用指针或引用。若保存基类的对象:派生类对象只有基类部分保存下来,而派生类部分被切掉;如果保存派生类的对象,基类对象无法有效转换为派生类对象。 在Effective原创 2020-06-26 08:08:09 · 522 阅读 · 0 评论 -
【一天一个C++小知识】004.C++中内部链接和外部链接
1. 编译单元 简单地,一个cpp文件就是一个编译单元。定义:当一个c或者cpp文件在编译时,预处理器首先递归包含头文件,形成一个含有所有必要信息的单个源文件,这个源文件就是一个编译单元。 编译每个编译单元时互相独立,即每个cpp文件之间不知道对方的存在(一般不这样写:#include“xxx.cpp”),编译器会分别将每个编译单元进行编译,生成相应的obj文件,然后生成最终的可执行文件。2. 内部链接和外部链接 C++中声明和定义是可以分开的,例如我们在B.cpp中声明并定义一个函数func原创 2020-06-23 09:05:22 · 257 阅读 · 0 评论 -
【一天一个C++小知识】003.C++中的void指针类型
void *可以指向任何类型的数据,它的作用在于对函数返回的限定和对函数参数的限定。但这并不意味着,void *也可以无需强制类型转换地赋给其它类型的指针。因为“无类型”可以包容“有类型”,而“有类型”则不能包容“无类型”。 但是,下列情况是不允许的:int i=99;void* vp=&i;*vp=3;//编译时错误*((int*)vp)=3;//正确 但是上面的代码中,并不能将vp转化为一个char或者double,这将改变已经分配给int的存储空间的大小,可能引起程序崩溃原创 2020-06-22 08:52:03 · 137 阅读 · 0 评论 -
【一天一个C++小知识】002.C++中const和volatile关键字
欢迎扫描二维码关注微信公众号 深度学习与数学 [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]...原创 2020-06-21 08:31:49 · 233 阅读 · 0 评论 -
【一天一个C++小知识】001.C++中的static关键字
static关键字包括面向过程的static和面向对象static,包括静态全局变量、静态局部变量、静态函数、静态数据成员、静态成员函数以及其他关于static的用法。原创 2020-06-20 09:26:31 · 150 阅读 · 0 评论 -
opencv4.3.0+Visual Studio 2019环境配置
opencv4.3.0+Visual Studio 2019环境配置与一段简单的测试代码原创 2020-05-21 09:54:50 · 1238 阅读 · 0 评论