类默认函数:构造函数,拷贝构造函数,赋值函数和析构函数 构造函数、析构函数和赋值函数是类最重要的函数,被称为The Big Three。与其他成员函数相比,The big three特殊之处在于,如果代码中没有提供这些函数的实现,C++编译器自动合成缺省的函数实现。有指针成员变量的类一定要提供The ...
分类:
其他好文 时间:
2018-09-09 15:18:55
阅读次数:
171
特殊的构造函数: 示例如下: 17-24行就是编译器替我们提供的默认构造函数和拷贝构造函数。 运行结果如下: 可以看到t1和t2中i和j的值是一样的。 当我们的类中没有编写任何的构造函数时,编译器才会给我们提供默认的构造函数,拷贝构造函数是构造函数的一种。 拷贝构造函数: 兼容C语言的方式类似于 T ...
分类:
其他好文 时间:
2018-09-01 00:44:54
阅读次数:
171
c/c++ 编译器提供的默认6个函数 1,构造函数 2,拷贝构造函数 3,析构函数 4,=重载函数 5,&重载函数 6,const&重载函数 c++ include using namespace std; class Test{ public: Test(int d = 0):data(d){ c ...
分类:
编程语言 时间:
2018-08-19 11:05:17
阅读次数:
138
它们两个的数值变化的区别,我这里就不多说了 这里主要说明两者在效率上的区别 (1)首先如果是自带的数据类型,比如int型,++i和i++,编译器的实现方式是相同的,两者并没有效率上的区别,虽然也有副本的开销,但是一般编译器会优化。 (2)如果是自定义的数据类型,比如自己定义的类。这个时候两者就有了区 ...
分类:
其他好文 时间:
2018-08-19 01:00:25
阅读次数:
159
一、拷贝构造函数 1、是一种特殊的构造函数,就是用一个已有的对象去构造其同类的副本对象,即对象克隆 class 类名 { 类名(类名& that) { 对成员挨个赋值 } } 2、编译器会默认生成一个拷贝构造函数 编译生成的拷贝构造函数默认会逐字节复制类中的每一个成员 如果在类A中有类B成员,会在类... ...
分类:
编程语言 时间:
2018-08-16 21:04:42
阅读次数:
174
C++智能指针,指针容器原理及简单实现(auto_ptr,scoped_ptr,ptr_vector). [TOC] 前言 最近再写一个muduo的异步日志接触了很多智能指针,但是又不打算用boost库,只好模一个来用用了. 智能指针本身是一个对象,它在栈上创建,构造的时候分配堆上资源,析构的时候释 ...
分类:
编程语言 时间:
2018-08-09 22:00:49
阅读次数:
224
不要轻视拷贝构造函数与赋值函数 由于并非所有的对象都会使用拷贝构造函数和赋值函数,程序员可能对这两个函数 有些轻视。请先记住以下的警告,在阅读正文时就会多心: 本章开头讲过,如果不主动编写拷贝构造函数和赋值函数,编译器将以“位拷贝” 的方式自动生成缺省的函数。倘若类中含有指针变量,那么这两个缺省的函 ...
分类:
其他好文 时间:
2018-08-02 13:56:41
阅读次数:
125
类的构造函数、析构函数与赋值函数 构造函数、析构函数与赋值函数是每个类最基本的函数。它们太普通以致让人容易 麻痹大意,其实这些貌似简单的函数就象没有顶盖的下水道那样危险。 每个类只有一个析构函数和一个赋值函数,但可以有多个构造函数(包含一个拷贝 构造函数,其它的称为普通构造函数)。对于任意一个类 A ...
分类:
其他好文 时间:
2018-08-02 13:15:54
阅读次数:
159
1、被调用的3个时机: (1)直接初始化或拷贝初始化; (2)将一个对象作为一个实参传递,形参采用非指针或非引用的对象进行接收时; (3)函数的返回值是一个非指针或者非对象被接收时。 2、举例说明: 输出结果: ...
分类:
编程语言 时间:
2018-07-18 20:43:50
阅读次数:
156
1.首先看一个例子: 情形1输出: 情形2输出: 第二种情况输出对应Test2的初始化列表,直接调用拷贝构造函数初始化test1,省去了调用默认构造函数的过程。所以一个好的原则是,能使用初始化列表的时候尽量使用初始化列表。提高了性能。 2. 除了性能问题之外,有些时场合初始化列表是不可或缺的,以下几 ...
分类:
编程语言 时间:
2018-07-18 14:10:15
阅读次数:
197