![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
柴_笔记
软甲开发用到什么总结什么,想到什么写什么
展开
-
占位符
%d(%i):十进制有符号整数%u:十进制无符号整数%f:浮点数(float)%e(%E):浮点数,e-记数法%a(%A):浮点数,十六进制数和p-记数法(C99)%s:字符串(string)...原创 2019-12-08 22:23:45 · 924 阅读 · 0 评论 -
数字--string
#include<string>usingnamespacestd;数字<—>stringlongint strtol(const char*nptr,char**endptr,int base);解析:将参数nptr字符串根数base(进制数)来转换成long int;nptr:0x表示16进制字符串,0(零)表示8进制字符串en...原创 2019-12-08 22:23:06 · 209 阅读 · 0 评论 -
string转换char*
//string转char*stringstr="hello";constchar*p=str.data();char*p=(char*)str.data();stringstr="hello";constchar*p=str.c_str();char*p=(char*)str.c_str();...原创 2019-11-28 23:50:39 · 9440 阅读 · 0 评论 -
二叉树
/*二叉树实现 1.创建二叉树 2.递归输出二叉树 2.1递归先序输出 2.2递归中序输出 2.3递归后序输出 3.非递归输出 3.1非递归先序输出 3.2非递归中序输出 3.3非递归后序输出 4.层次遍历二叉树 5.求树高 6.求树叶子节点 7...转载 2018-10-31 16:41:08 · 171 阅读 · 0 评论 -
智能指针
std::auto_ptr 属于std需要包含头文件 #include<memory> std::auto_ptr<类> my_memory(new Simple(1));1,你知道智能指针吗?智能指针的原理。 2,常用的智能指针。 3,智能指针的实...原创 2018-10-31 17:52:38 · 105 阅读 · 0 评论 -
Static
static可以用来修饰函数和变量,包括成员函数和成员变量,static改变的是修饰变量的生命周期,作用域没变局部静态变量,它的生命周期也是全局的并且只被初始化一次,但是作用域就仅仅是在定义的函数体中。静态成员变量:必须在类外初始化,static成员变量访问形式:1°可以被对象访问 2° 可以被类访问 3°可以被对象指针访问静态成员函数:当static修饰静态成员函数时,该函数属于...原创 2018-11-01 10:09:57 · 154 阅读 · 0 评论 -
变量声明和定义的区别
变量的声明和定义,就像买票看电影,声明就是买票的过程,你要告诉售票员你要买什么票,定义就是票到手以后的事,这事你知道了你的电影场次,座位等,虽然你现在还没到座位上;例如;int a ;这是定义,不是声明,在C++中extern int a ;只有这个才是声明;区别: 声明可以多次,定义只能一次; 物理空间的分配;...原创 2018-12-20 12:35:31 · 806 阅读 · 0 评论 -
类型转换
占位符%lf是double的占位符显示转换:这个比较容易一目了然隐式转换:比较难,规则:精度小与精度大的进行运算,则精度小的转为精度大的; 范围小的与范围大的进行运算,则范围小的转为范围大的 int i = -3; unsigned int d = 1; if (i+d&...翻译 2019-06-19 22:09:30 · 83 阅读 · 0 评论 -
字节长度
总体而言,最大的不同点就是在long型和指针类型长度不一样,对于指针而言,64位机器可以寻址2^64,每个内存地址长度为64位,即8字节。C类型 32位机器(字节) 64位机器(字节) char 1 1 short 2 2 int 4 4 long int 4 8 long long 8...翻译 2019-06-24 18:53:21 · 3584 阅读 · 0 评论 -
32位系统和64位系统的区别
这个32位和64位主要说的是CPU一次处理数据的能力,32位就是32bit即一次可以处理4个字节的数据;64位就是64bit即一次可以处理8个字节32位机器可以寻址2^32,64位机器可以寻址2^64,每个内存地址长度(字节)为64位,即8字节。(就好像有一排编了号的房子,每个房子对应一个字节的内存,32位系统只能利用其中的2^32间,64位系统可以利用2^64间,)第一,64位的CP...翻译 2019-06-24 19:12:26 · 3166 阅读 · 0 评论 -
虚函数表实现理念
每个包含了虚函数的类都包含一个虚表。我们知道,当一个类(A)继承另一个类(B)时,类A会继承类B的函数的调用权。所以如果一个基类包含了虚函数,那么其继承类也可调用这些虚函数,换句话说,一个类继承了包含虚函数的基类,那么这个类也拥有自己的虚表。个人理解:用父类指针指向子类对象时,如果基类中有虚函数,那么,虚函数的调用是利用编译器自带的虚函数表来调用,如果子类中有重写该函数,那...翻译 2019-06-27 21:42:05 · 84 阅读 · 0 评论 -
C++异常处理-初识
简单的说异常处理就是为了判断代码的正确性,为了能把握代码每一步的结果是否是自己预想的那样,一般来说我们会在代码中加入很多的输出显示语句,异常处理也是类似的作用,不过方式不太一样,输出显示是一步步查看结果,异常处理可以直接预先将可能存在的问题设计上,方便查看,也高大上;以此为例:int main(){ double m, n; //此处定义俩个变量作为实验用 cin ...转载 2019-06-27 23:16:10 · 81 阅读 · 0 评论 -
报文通讯中量纲的作用
举例说明,假如要发送一个特别大的数字,但是所给的字节不够用就需要通过量纲的方式来处理,如果数字过小,加上电脑的处理误差,为了使数字更加准确,用量纲先放大,再转小;总之,量纲是为了:使数据传输的更加准确...原创 2019-07-11 22:53:52 · 362 阅读 · 0 评论 -
指针变量所取空间内容宽度
首先我们说变量,变量占内存,定义不同类型的变量会占用不同大小的空间;首先考虑一个问题,你需要几个字节,是谁要求的?数据类型要求的,假设:我定义了个int类型的数据,那我就要问内存要4个字节的内存空间,为啥要4个而不是1.2.3.5.6..个,因为我定义的是int类型,int就是4,所以数据类型决定了所需空间的大小,而变量名,只是个名字,给这4个空间取个名字,就是变量名。再说指针,啥是指针...原创 2019-09-29 16:35:28 · 223 阅读 · 0 评论 -
时间复杂度
时间复杂度:时间复杂度就是用来表示代码运行的优异性,配合数据结构来用;简单的说,为了实现一个功能,例如排序,时间复杂度低,代表可以用更短的时间来实现,那么在项目过程中就更优化;2.时间频度一个算法中,语句执行的次数,被称为时间频度T(n):时间频度和复杂度是不同的3.概念定义:存在某个辅助函数f(n),当n->∞时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n...原创 2019-09-29 16:50:38 · 1385 阅读 · 0 评论 -
空间复杂度:
是指一个算法在执行的过程中,需要借助的零时空间的个数,比如俩个变量交换值,这时就需要一个中间值来保存其中一个变量的值!这个复杂度就是1。但是现在硬件方面发展越来越快,所以开发过程中,不在乎这几个零时空间的浪费了,所以完全可以不用考虑空间复杂度!主要是因为一个算法中基本上用不到开辟过多的零时空间,开的少了,基本上无所谓了。所以,算法主要考虑时间复杂度;空间复杂度不考虑;但是得知道什么是空间...原创 2019-09-29 16:55:10 · 444 阅读 · 0 评论 -
多线程
#include <thread>//多线程的头文件第一步:写一个返回值为void的函数作为线程的主体,例如:void thread01()//作为类似Main函数的作用;{}第二步:在Main函数里创建一个多线程对象,函数名作为参数传进去,例:thread task01(thread01);这样多线程就创建成功了;这时task01和Main函数是同级别的...原创 2018-10-31 15:25:41 · 160 阅读 · 0 评论 -
C++变量作用域,存储区
在C++中,存储区域可以分为:堆,栈,常数区,静态区,代码区;堆:栈:局部变量(定义它的函数内有效)常数区:静态区:全局变量(整个程序文件中有效),静态全局变量(定义它的文件中有效),静态局部变量(定义它的函数内有效,整个程序文件存在)代码区: 全局变量:存储在静态存储区,整个程序运行区间都存在;初始化:如果没有初始化,那么自动初始化为0;作用域:整个程序运行期间。...原创 2018-10-31 15:56:14 · 182 阅读 · 0 评论 -
置空指针调用成员函数问题
问题由来:new一个自己的类,用完后delete指针,置空NULL 后,打断点指针为空,但是依旧可以调用出类里的函数,且编译通 过了;学习参考路径: 点击打开链接总结:在java,Python语言中是做不到这样的,但是C++中可以,原因是其绑定方式不一样; java,python是动态绑定,也就是说,代码实现的时候是用到什么找什么,比如用到成...原创 2018-05-21 10:38:59 · 419 阅读 · 0 评论 -
迭代器;iterator
迭代器就是以指针的方式操作容器 QList<int>arr;//定义容器,int为数据类型,不固定,其可以是普通数据类型,也可以是类实例化的对象或指针 for(int i=0;i<=10;i++) { arr.push_back(i);//往容器里加元素 } for(int i=0;i<=arr.length();i++) ...原创 2018-05-15 17:10:25 · 176 阅读 · 0 评论 -
a++和++a 左值不可以赋值问题
这个例子主要是考虑到a++和++a的存储问题; 我们知道,对于a++是先将a给表达式再++; 那么这就是需要一个tmp空间来保存++之前的a!!!但是对于 ++a是不需要的,因为先执行++,那么就是直接改a空间内容就好了!那么我们下面的问题就是这样! int a = 4; 一、 a += ( a++ ); ...转载 2018-05-16 18:00:44 · 1193 阅读 · 0 评论 -
C++信号
#include<signal.h>//信号使用的头文件在C++中系统定义了几个数字信号,以SIGINT为例,可以右击SIGINT转到定义查看信号组raise(SIGINT);//发送SIGINT信号signal(SIGINT, sig);//这里是将信号与其所对应的函数连接起来,signal不可变,sig是函数名(函数指针也行)欠缺:自定义信号 ...原创 2018-06-11 15:30:07 · 1118 阅读 · 0 评论 -
多态
多态是在继承的基础上的使用,所以先说继承;继承就是父子类:父类中有的子类没有,子类可以用父类的; new子类对象时调用顺序:父构造,子构,子析,父析;用父类指针new子类对象时是new出来的父类的对象,析构函数和调用的成员都是父类的; 多态:在继承的基础上虚析构函数:如果子类有实现就是调用子类的,如果子类没有实现就调用父类的;虚析构函数是为了管理内存,不虚的话...原创 2018-06-11 17:37:00 · 94 阅读 · 0 评论 -
抽象类、接口
含有纯虚函数的类就是抽象类 纯虚函数需要在声明之后加个=0;virtual void show() = 0;纯虚函数是不能被实例化,他只能被作为派生类的基类,在基类里只有声明没有函数体;如果基类有纯虚函数,但是派生类没有实现,或者派生类自己定义了一个新的纯虚函数,那么该派生类也属于抽象类纯虚函数在派生类里必须实现他的函数实体,否则编译不会通过:不允许使用抽象类类型“类名”的对象...原创 2018-06-13 09:54:55 · 88 阅读 · 0 评论 -
函数指针和指针函数
指针函数:返回值为指针的函数,函数有返回值类型、函数名、参数列表、返回值return 指针函数就是一个指针,其类型由返回值类型觉得,普通函数的返回值是具体的值,指针函数返回的是指针; 定义: 返回值类型*函数名(参数列表){ return *} 函数指针: 函数指针就是把一个函数的地址记录下来,以指针的方式操作...原创 2018-06-07 11:20:36 · 139 阅读 · 0 评论 -
结构体、联合体、类:struct、union、class
区别:类的成员默认是私有的private 结构体成员默认是公有的public 联合体又叫共同体,成员默认是公有的public,但是系统只给分配一个内存,内存大小为最长的成员所需的内存大小,同一时间只有一个成员有值,比如:union中有int...原创 2018-06-07 15:18:03 · 729 阅读 · 0 评论 -
重写和重载
重载:在同一个类里,函数名相同,参数列表不同,调用函数的时候需要通过区分参数列表来区别调用的是哪个函数,这种方式叫函数重载;与返回值没关系重写:在继承或多态的基础上,子类实现了基类的功能,重新定义了基类函数的实现内容,子类对象调用函数的时候实现的是子类实现的内容,这叫重写; ...原创 2018-06-08 10:13:45 · 112 阅读 · 0 评论 -
时间:time
srand(time(NULL)); 随机数种子 cout << rand()%100<< endl; C++中获取本地时间是通过time(0)来获取的,但是time(0)获取到的是从1900年到现在的秒数,我们使用的时候需要把其转换成我们常见的格式 , 意味着我们需要现在时间的具体年,月,日,时,分,秒。在C++的库里有一个类#include<ti...原创 2018-06-08 14:54:58 · 442 阅读 · 0 评论 -
extern使用
简单理解:extern int n; 这句代码的意思是告诉计算机,变量n在别的文件里声明定义过了,在这里我可以直接用。 比如在类A里有成员变量a,为了在B类里直接用该数据,可以在B类文件里extern int a;这样在B的方法里就可以直接使用a,比如输出一下a的值。补充:定义变量的时候会开辟...原创 2018-08-10 15:43:29 · 303 阅读 · 0 评论 -
模板
模板就是一个框架,我们可以通过随意的改变其数据类型,但是它内部执行的方式是不变的。比如求最大值max(a,b)无论我们传进去得ab是多少,是int还是double等数据类型,都不会影响我们对想得到的结果有影响。其作用:需要大量的相同操作,但是操作方法是一样的的时候可以写一个模板。(节省很多时间)实现:可以先写一个具体的类或方法,把变量类型改一下就OKtemplate< cla...原创 2018-08-15 14:43:55 · 109 阅读 · 0 评论 -
C++读写文件
此处以txt文件为例,操作文件流的读写,同样是以头文件的方式,包含使用;#include<fstream>#include<istream>#include<ostream>C++的读写两个头文件在.cpp的文件夹里新建了一个test.txt文件,内容为空int main(){ ofstream outfile; string ...原创 2018-08-28 13:55:08 · 169 阅读 · 0 评论 -
C++宏
理解宏的原则:宏就是代码替换;个人理解,宏很弱智但是很常用(好用)对于使用宏根据需求直接编写宏的代码会很乱,所以,需要实现宏的时候,可以先把要实现的功能的代码写出来,再给成宏(需要参数的传上)例:#define MMM cout<<"字符串"<<endl;/“”定义字符串”等等使用方式。例:我要定义一个函数名为show 返回值为int ,函数体有返回值有输...原创 2018-08-21 10:51:43 · 1468 阅读 · 0 评论 -
C++变量命名规则
变量命名规则:字母,数字,下划线,数字不开头,$(有钱能使鬼推磨)每个公司都有自己的框架,有独特专属的命名规则,所以对于新人来说,技术要求并不是很高,但是对于代码基础能力,从服从公司代码风格的能力尤为重要。网上有很多种变量的命名法,但是根据公司不同,需求不同,所以,没固定的命名法,只能根据公司需求而定,在此不多写。变量都是由几个单词组成,如:驼峰命名,userName注意:1、...原创 2018-08-21 11:26:09 · 850 阅读 · 0 评论 -
变量
变量存储区:一般程序的由new产生的数据存放在堆区 函数内部的自动变量存放在栈区,自动变量一般会随着函数的退出而释放空间静态数据(即便是函数内部的静态局部变量也存放在全局数据区,全局数据区的 数据不会因为函数的退出而释放空间变量分类和区别:局部变量:的生命周期、作用域是是其所在的大括号,内存开在栈上,静态局部变量:作用域是其所在的函数,内存开在全局存储区,全局变量: 作用域全局...原创 2018-05-18 08:49:24 · 118 阅读 · 0 评论