C++
这个一个积极上进的ID
这个作者很懒,什么都没留下…
展开
-
对单例设计模式的学习(一) --饿汉式:将对象建立在静态区的单例模式
个人对单例模式的理解:单例模式的设计是为了实现一个类只能有一个对象的情况,例如对于一个服务器而言,数据库类可以设计成单例模式的,保证数据传输的准确性。单例模式一般用于避免实例被重复创建,多个实例同时存在会产生逻辑错乱的场合,且单例模式较节约内存空间(因为只有一个对象)。单例模式的实现思路:将构造函数,赋值重载运算符,拷贝构造函数这三个会产生新对象的方法设置为private权限,以此来防止对象...原创 2019-03-29 17:25:34 · 425 阅读 · 0 评论 -
对于const修饰符的总结
1.const和变量例如:const int a = 10;这将使得a的值为一个常量,后面无法改变,需要注意 使用const修饰的变量必须被初始化const int a;这样的代码会使得编译失败。2.const和引用int a = 10;const int &b = a; 使用const修饰的引用将无法改变引用对象的值,即类似b = 5;这样的代码会使得编译失败。...原创 2019-04-09 21:47:04 · 683 阅读 · 0 评论 -
4.15c++学习笔记
1#include<iostream>using namespace std;int GetSize(int data[]){ return sizeof(data);}int main(){ int data1[5] = { 1,2,3,4,5 }; int size1 = sizeof(data1); int *data2 = data1; int size...原创 2019-04-15 23:47:58 · 123 阅读 · 0 评论 -
C++异常处理
1.异常处理简介有的程序虽然能通过编译,也能投入运行。但是在运行过程中会出现异常,得不到正确的运行结果,甚至导致程序不正常终止,或出现死机现象。例如: .在一系列计算过程中,出现除数为0的情况。.内存空间不够,无法实现指定的操作。.无法打开输入文件,因而无法读取数据。.输入数据时数据类型有错。由于程序中没有对此的防范措施,因此系统只好终止程序的运行。这类错误比较隐蔽,易被发现,往往耗...转载 2019-04-08 19:52:50 · 273 阅读 · 0 评论 -
4.11 c++学习笔记
1.C语言中提供了存储说明符auto、register、extern、static说明的四种存储类别。auto:auto被定义为自动推断变量的类型,auto变量需要有实例进行初始化。register:将变量直接放进寄存器中,适合被频繁使用的变量extern:使用外部的全局变量static : 将变量存储在静态区中2.unsigned int n = -1;cout << n ...原创 2019-04-11 22:32:57 · 152 阅读 · 0 评论 -
4.2c++的学习笔记
1.如果extern声明有初始化表达式,那么它被认为是定义,而忽略extern,例如:extern int var = 6;//extern 将被忽略。2.原创 2019-04-02 17:57:12 · 119 阅读 · 0 评论 -
对单例设计模式的学习--饿汉式:结合智能指针的单例模式
先上代码#include<memory>#include<iostream>using namespace std;class CSingleton{public: static CSingleton* GetInstance(); ~CSingleton();private: CSingleton(); CSingleton(const CSingl...原创 2019-03-30 16:06:05 · 144 阅读 · 0 评论 -
4.3c++学习笔记
1.重载运算符时,为什么流运算符要重载为友元?:c++中规定重载流运算符时 “>>”的函数的第一个参数和函数的类型都必须是istream&类型,第二个参数是要进行输入操作的类。重载“<<”的函数的第一个参数和函数的类型都必须是ostream&类型,第二个参数是要进行输出操作的类。即需要重载成istream & operator >> ...原创 2019-04-03 22:46:24 · 101 阅读 · 0 评论 -
对智能指针的学习
个人对智能指针的理解智能指针类,方便内存的管理。对于一般指针,空间被new出来后,需要显式地调用delete从而释放空间,否则就会有内存泄漏的问题。而智能指针的智能正是体现在这一方面,它不需要显式地调用delete,从而提高代码的容错率,减少了内存泄漏的可能。智能指针实质上是一个对象,但是表现却像一个指针,正常情况下,可以使用指针的->和*操作运算符。个人认为,智能指针的实质是用处于栈...原创 2019-03-29 22:55:39 · 129 阅读 · 0 评论 -
对单例设计模式的学习(二)--饿汉式:将对象建立在堆区的单例模式
将对象建立在堆区上文阐述的是将对象Instance建立在静态区的情况,这种对象会伴随着程序共同消亡,所以析构函数能够被调用到;同样的也将带来弊端,程序可能受内存限制,静态区的空间不足,且对象无法手动进行释放,所以就有了将对象建立在堆区new出来的形式。class CSingleton{public: static CSingleton *GetInstance(); static vo...原创 2019-03-29 19:21:51 · 162 阅读 · 1 评论 -
vector 扩容为什么要以1.5倍或者2倍扩容
我们知道,vector 在需要的时候会扩容,在 VS 下是 1.5倍,在 GCC 下是 2 倍。那么会产生两个问题:(1)为什么是成倍增长,而不是每次增长一个固定大小的容量呢?(2)为什么是以 2 倍或者 1.5 倍增长,而不是以 3 倍或者 4 倍等增长呢?1、第一个问题 :如果已成倍方式增长。假定有 n 个元素,倍增因子为 m; 完成这 n 个元素往一个 vector 中的 push_...转载 2019-09-28 00:23:42 · 1233 阅读 · 0 评论