在介绍scoped_ptr之前,我们先回顾一下前两篇文章的内容. 首先,智能指针采用RAII机制,通过对象来管理指针,构造对象时,完成资源的初始化;析构对象时,对资源进行清理及汕尾. auto_ptr,通过转移管理权来完成对象的拷贝与赋值,在实际开发中并不实用. 回顾完智能指针的背景及auto_pt ...
分类:
编程语言 时间:
2017-04-01 23:00:07
阅读次数:
219
继承 (1).目的:为了代码的复用、允许在保持原有类特性的基础上进行扩展 、增加功能 (2).继承关系&访问限定符: public、protected、private (3).派生类的六个成员函数 构造函数、析构、拷贝构造、赋值运算符重载、取地址符操作符重载、const修饰的取地址操作符重载 继承过 ...
分类:
编程语言 时间:
2017-03-29 14:26:00
阅读次数:
209
对象赋值-赋值运算符重载 赋值运算符函数是在类中定义的特殊的成员函数 典型的实现方式: 流运算符重载函数的声明 istream& operator>>(istream& in, Test& dst); ostream& operator<<(ostream& out, const Test& src ...
分类:
编程语言 时间:
2017-03-26 21:09:26
阅读次数:
207
Description 定义Array类: 1.拥有数据成员int length和int *mems,分别是数组中元素的个数和元素列表。 2. 无参构造函数,将mems设置为NULL,length为0。 3. 重载==运算符,用于判断两个Array对象是否相等。相等包括两种情况:(1)两个对象是同一 ...
分类:
编程语言 时间:
2017-03-26 20:02:46
阅读次数:
230
(1).浅拷贝: ***s1、s2、s3共用一块存储空间 ***在浅拷贝中,由于拷贝构造函数和复制运算符重载时,只把已有对象的内容赋给新创建的对象,导致多个对象公用了同一段内存,结果当任意一个对象销毁时他就会释放那段他们公用的内存,当剩下的对象在被销毁时,就回重复的释放那段内存空间,导致程序崩溃 ( ...
分类:
其他好文 时间:
2017-03-25 00:07:17
阅读次数:
182
//void oper(int a,int b) const ;==>void oper(const className* const this,int a,int b); 运算符重载 所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能,因此,一个函数名就可以用 ...
分类:
其他好文 时间:
2017-03-17 00:28:58
阅读次数:
166
由于浅拷贝使多个对象共用一块内存地址,调用析构函数时导致一块内存被多次释放,导致程序奔溃。 实现string类的时候通常显示的定义拷贝构造函数和运算符重载函数。 由于释放内存空间,开辟内存空间时花费时间,因此,在我们在不需要写,只是读的时候就可以不用新开辟内存空间,就用浅拷贝的方式创建对象,当我们需 ...
分类:
其他好文 时间:
2017-03-13 14:39:46
阅读次数:
170
运算符重载与sort() 二话不说上代码: 此函数 展示了: ①"<"逻辑符的重载 ②"cout"输出的重载 ③“sort()”的两种排序规则的定义:一种是通过定义逻辑函数"compare",另一种是通过重载逻辑运算符"<" ④更明白了 compare 是定义一种小于 2017-03-11 22:5 ...
分类:
其他好文 时间:
2017-03-11 23:08:15
阅读次数:
203
运算符的重载。C++的开发人员应该很熟悉这个概念,但这对Java 和 VB 开发人员确实全新的。 对于一些数值间的运算,如果通过方法来指定运算规则的话,不免会繁琐,这时就可以利用运算符的重载。 例: Matrix a,b,c; //定义矩阵对象 Marix d=c*(a+b); 如果用不支持运算符重 ...