创建型模式 3)单例模式 单例模式主要用于只需要一个实例,例如日志系统,一个项目应该只有一份日志。 主要技巧在于: 将构造函数和拷贝构造函数设为私有,所以无法直接通过new来创建对象 提供一个获取唯一实例的接口,这样外部可以通过这个接口创建对象 将该实例设为static,这样就能保证只有一份实例 注 ...
分类:
编程语言 时间:
2019-12-07 00:57:22
阅读次数:
131
我们一起来学习常用接口string类常见构造:函数名功能说明string()构造空的string类对象,即空字符串string(constchar*s)用C-string来构造string类对象string(size_tn,charc)string类对象中包含n个字符cstring(conststring&s)拷贝构造函数voidTeststring(){strings1;//构造空的st
分类:
其他好文 时间:
2019-11-24 09:44:48
阅读次数:
82
下面是C++中定义的深,浅拷贝 当用一个已初始化过了的自定义类类型对象去初始化另一个新构造的对象的时候,拷贝构造函数就会被自动调用。也就是说,当类的对象需要拷贝时,拷贝构造函数将会被调用。以下情况都会调用拷贝构造函数:(1)一个对象以值传递的方式传入函数体 (2)一个对象以值传递的方式从函数返回 ( ...
分类:
编程语言 时间:
2019-11-16 09:16:22
阅读次数:
86
设计一个类,该类只能在堆上创建对象 将类的构造函数私有,拷贝构造声明成私有。防止别人调用拷贝在栈上生成对象。 提供一个静态的成员函数,在该静态成员函数中完成堆对象的创建 注意 在堆和栈上创建对象都会调用构造函数,为了防止在栈上创建对象我们将构造函数私有化。 拷贝构造函数是在栈上创建对象。 1 cla ...
分类:
编程语言 时间:
2019-11-13 01:06:10
阅读次数:
141
vector在push_back时,如果是自定义的数据结构,它会调用这个结果的拷贝构造函数来初始化vector中的存储空间,如果需要用push_back()需要自己实现拷贝构造函数!具体vector中是怎么push_back可以查看stl源码剖析中的具体实现。 如果注释掉test的拷贝构造函数,pu ...
分类:
其他好文 时间:
2019-11-06 16:34:50
阅读次数:
113
一、什么是vector? 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。 二、容器特性 1.顺序序列 顺序容器中的元素按照严格的线性顺序排序。可以 ...
分类:
其他好文 时间:
2019-10-31 00:54:58
阅读次数:
92
1:String类型 1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 //初始化方法 6 string s1 = "hello";//默认构造方法 7 string s2(s1);//将s2初始化为s1的一个副本 8 s ...
分类:
其他好文 时间:
2019-10-19 22:16:14
阅读次数:
138
引用传递、值传递、指针传递: https://www.cnblogs.com/ducongcong/p/6912164.html 深拷贝与浅拷贝: https://blog.csdn.net/caoshangpa/article/details/79226270 总结:浅拷贝只是对指针的拷贝,拷贝后 ...
分类:
其他好文 时间:
2019-10-17 01:08:10
阅读次数:
80
对于空类,编译器不会生成任何的成员函数,只会生成1个字节的占位符。 有时可能会以为编译器会为空类生成默认构造函数等,事实上是不会的,编译器只会在需要的时候生成6个成员函数:默认构造函数、默认拷贝构造函数、默认析构函数、默认赋值运算符 这四个是我们通常大都知道的。但是除了这四个,还有两个,那就是取址运 ...
分类:
编程语言 时间:
2019-10-08 23:53:06
阅读次数:
163
1、默认构造函数2、析构函数3、拷贝构造函数4、赋值运算符(等号:operator=)5、取址运算符(operator&)(一对,一个非const的,一个const的) 有争议,跟具体编译器相关,有的生成,有的不生成 例: class Empty{public: Empty(); // 缺省默认构造 ...
分类:
编程语言 时间:
2019-10-06 18:23:52
阅读次数:
172