![](https://img-blog.csdnimg.cn/20210318095935141.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++
学习C++
你看看这个C还有++
C了个++
展开
-
智能指针
RAIIRAII是一种利用对象生命周期来控制程序资源的技术在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终有效,最后在对象析构的时候释放资源,实际上是将一份资源的责任托管给了一个对象,这样做呢,就不需要显式释放资源,采用这种方法,对象所需资源在其生命周期内始终有效。智能指针原理:RAII特性重载operator* 和operator-> ,使其具有像指针一样的...原创 2019-10-27 16:32:36 · 238 阅读 · 0 评论 -
指针和引用的区别
指针和引用的区别:在语法上引用就是一个别名,没有独立的空间,和其引用实体共用同一块空间,在底层实现上实际是有空间的,因为引用是按照指针方式来实现的(在汇编代码中可以看出来)引用在定义时必须初始化,指针没有要求引用的类型必须和实体同类型,指针可以强制类型转化,比如将void* 转化为 int*引用在初始化引用一个实体后,就不能再引用其他实体,而指针可以在任意时刻指向任意一个同类型的实体没...原创 2019-10-27 14:53:04 · 294 阅读 · 0 评论 -
设计模式之单例模式
什么是设计模式:设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。设计模式使代码编写真正工程化。设计模式又包含有:单例模式,工厂模式,观察者模式等单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例。单例模式又分为饿汉模式和懒...原创 2019-10-25 19:26:03 · 157 阅读 · 0 评论 -
const
(1)可以定义const常量,具有不可变性。 例如:const int Max=100; Max++会产生错误;(2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。 例如: void f(const int i) { …} 编译器就会知道i是一个常量,不允许修改;(3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。 同宏定义一样,可以做到不变则已,...原创 2019-10-25 12:39:30 · 219 阅读 · 0 评论 -
C语言中static全局变量与普通的全局变量区别
1. static全局变量与普通的全局变量有什么区别 ?全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只...原创 2019-10-25 12:16:46 · 1479 阅读 · 0 评论 -
异常安全
构造函数完成对象的构造和初始化,最好不要在构造函数中抛出异常,否则可能导致对象不完整或没有 完全初始化析构函数主要完成资源的清理,最好不要在析构函数内抛出异常,否则可能导致资源泄漏(内存泄漏、句柄未关闭等)C++中异常经常会导致资源泄漏的问题,比如在new和delete中抛出了异常,导致内存泄漏,在lock和 unlock之间抛出了异常导致死锁...原创 2019-10-23 13:28:37 · 123 阅读 · 0 评论 -
异常
C语言处理错误的方式1、终止程序,如assert。缺陷:难以接受,如发生内存错误,除0错误就会终止程序。2、返回错误码,缺陷:需要自己去找出错误。c++异常异常是一种处理错误的方式,当一个函数发现自己无法处理的错误就可以抛出异常,让函数的直接或者间接的调用者去处理这个错误。throw:当问题出现时,程序会抛出一个异常,这是通过throw来完成的catch: 在您想要处理问题的地方,通...原创 2019-10-23 13:26:26 · 159 阅读 · 0 评论 -
野指针
空指针空指针就是 void*;void* 可以指向任何类型对象的地址,表示这是一个指针,和地址值无关,但不知道存储在该地址上的数据类型,所以在获取该指针所指向的值时,应将其转换为对应的指针类型int a=10;void* pa=&a;int b=*((int*)pa); //强转为 int*空指针支持的操作:1、向函数传递 void指针2、在函数里返回 void 指针...原创 2019-10-23 12:43:40 · 128 阅读 · 0 评论 -
list
list 是顺序容器的一种,list是一个双向链表,使用时需要包含头文件list。双向链表的每个元素都有一个指针指向后一个元素,也有一个指针指向前一个元素,list不支持根据下表随机访问。在list中,在已经定位到要增删元素的位置的情况下,这个操作可以在常数时间内完成,相比于vector,list通常在任意位置进行插入,移动元素的效率更好list还需要一些额外的空间来保存每个节点与其他相节点的...原创 2019-10-19 14:39:11 · 119 阅读 · 0 评论 -
vector
vector是顺序容器的一种,它是可变长的动态数组,支持随机访问,使用时需要包含头文件vector。底层实现是数组,线性连续的空间在vector容器中,根据下标随机访问某个元素的时间是常数,在尾部添加一个元素的时间大多也是常数,在中间插入和删除元素的,要移动多个元素,因此速度较慢,时间复杂度和元素个数成正比。vector容器在实现时,分配的空间一般大于存放元素所需要的空间。例如:哪怕里面只有...原创 2019-10-19 14:09:31 · 134 阅读 · 0 评论 -
string
string 原型class String{public: String(const char *str = NULL); // 普通构造函数 String(const String &other); // 拷贝构造函数 ~String(void); // 析构函数 String...原创 2019-09-28 19:13:05 · 257 阅读 · 0 评论 -
虚函数表
虚函数基础知识 C++中,一个类存在虚函数,那么编译器就会为这个类生成一个虚函数表,在虚函数表里存放的是这个类所有虚函数的地址。当生成类对象的时候,编译器会自动的将类对象的前四个字节设置为虚表的地址,而这四个字节就可以看作是一个指向虚函数表的指针。虚函数表可以看做一个函数指针数组。 虚函数表是属于类,类的所有对象共享这个类的虚函数表。并且,子类对象与指向子类的基类指针指向的对象,使用同一个...原创 2019-09-28 18:46:52 · 219 阅读 · 0 评论 -
static关键字
static关键字1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下一次调用时仍维持上次的值;2)在模块内的static全局变量可以被模块内所有函数访问,但不能被模块外其他函数访问3)在模块内的static函数只可被这一模块内的其他函数调用,这个函数的使用范围被限制在声明它的模块内4)在类中的static成员变量属于整个类所拥有,对...原创 2019-09-27 18:09:17 · 128 阅读 · 0 评论 -
extern和extern "C"
extern变量extern int a; //仅仅是在声明一个全局变量并没有分配空间int a; //定义了一个全局变量extern int a=0; //定义全局变量并赋初值int a=0; //定义变量并给初值当你要引用一个全局变量时,你就要声明extern int a;这个时候extern不能省,否则就成定义了函数函数也有声明和定义,但二者有区别,函数的定义是有函数...原创 2019-09-27 17:20:37 · 112 阅读 · 0 评论 -
C++的三大特性
C++的三大特性:继承、多态、封装1、继承 被继承的是父类(基类),继承出来的类是子类(派生类),子类拥有父类的所有的特性。 继承方式有公有继承、私有继承,保护继承。默认是私有继承公有继承中父类的公有和保护成员在子类中不变,私有的在子类中不可访问。私有继承中父类的公有和保护成员在子类中变为私有,但私有的在子类中不可访问。保护继承中父类的公有和保护成员在子类中变为保护,但私有的在子类中...原创 2019-09-16 17:12:57 · 19686 阅读 · 2 评论 -
16/32/64位下变量的大小以及最大内存空间
在日常,我们会碰到关于一种数据类型的字节大小的问题,而且在不同的计算机位数下会有不同的值。计算机中的位数指的是CPU一次能处理的最大位数。l例如:32位计算机的CPU一次最多能处理32位数据,当然也可以处理比他位数低的数据。类型16位平台32位平台64位平台char111short222int...原创 2019-07-15 12:13:57 · 2058 阅读 · 0 评论 -
初识C++
1.什么是C++ C语言是结构化和模块化的语言,适合处理较小规模的程序。而C++语言在C语言的基础上引入并扩充了面向对象的概念,因为是基于C语言而产生的,它既可以进行C语 言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。2.C++入门2.1 C++关键字 &...原创 2019-07-09 22:21:50 · 138 阅读 · 0 评论