如果要自己定义STL容器的元素类最好满足STL容器对元素的要求 必须要求: 1、Copy构造函数 2、赋值=操作符 3、能够销毁对象的析构函数 另外: 1、可用的缺省构造函数,序列型容器必须,用于初始化元素 2、==操作符定义,用于判断相等 3、 #include #include using n....
分类:
其他好文 时间:
2014-08-26 17:02:16
阅读次数:
201
记得在复制构造函数和赋值操作符的参数类型上加上const.正确的复制构造函数应该是X::X(const X&)这种,而不是X::X(X&)这种,这里有两个原因.第一:绑定一个非const引用到一个临时对象是非法的.使用X::X(X&)作为复制构造函数不会允许复制任何特殊表达式的结果.为什么呢.?因为...
分类:
其他好文 时间:
2014-08-10 15:18:30
阅读次数:
195
主要原理在三、四两条一.拷贝构造函数与赋值操作符class A;A a;A b1(a); //拷贝构造函数的实例A b2 = a; //赋值操作符的实例:二.拷贝构造函数的应用实例1.同一类型的对象显示或隐式初始化一个对象,如下:class A;A a;A b(a);2.作为函数的实参,如下:voi...
分类:
其他好文 时间:
2014-08-08 01:57:15
阅读次数:
232
is-a关系 类包含关系
构造函数 复制构造函数 重载赋值操作符 析构函数
动态内存空间分配和释放 new delete操作
static 数据成员
友元函数 重载输入>>和输出<<操作符...
分类:
编程语言 时间:
2014-07-31 00:01:45
阅读次数:
439
noncopyable大家都知道定义一个空类的时候,它实际包含了构造函数,拷贝构造函数,赋值操作符和析构函数等。这样就很容易产生一个问题,就是当用户调用Aa(“^_^")或者Ac="^_^" 时会发生一些意想不到的行为,所以很多时候我们需要禁用这样的用法。一种方法就是把拷贝构造函数和赋值操作符显式的...
分类:
编程语言 时间:
2014-07-24 04:58:18
阅读次数:
300
上篇文章中,我们介绍了为什么应该彻底避免编写拷贝构造函数和赋值操作符。今天这篇我们讨论下为什么应该避免在析构函数中编写代码。即让析构函数为空。
例如:
virtual ~MyClass()
{
}
我们用空析构函数这个术语表示花括号内没有代码的析构函数。
需要编写析构函数可能有如下几个原因:
在基类中,可能需要声明虚拟析构函数,这样就可以使用一个指向基类的指针指向一个派生类的实例...
分类:
其他好文 时间:
2014-07-21 13:33:46
阅读次数:
188
C++ 复制函数
说道C++复制函数,大家也许并不陌生,就是类中的拷贝构造函数和赋值操作符,但是事实上也许我们一不小心就会忽略编译器所做的一些默认操作。引起晦涩的错误。下面分析几种场景:
一、场景一:全部默认
#include
class base{
public:
base(){}
base(int dt):data(dt){}
void get(){pri...
分类:
编程语言 时间:
2014-07-20 22:45:53
阅读次数:
341
假设有一个如下的MyClass类:
class MyClass
{
public:
//构造函数
//拷贝构造函数
MyClass(const MyClass& that)
: int_data_(that.int_data_),
dbl_data_(that.dbl_data_),
str_data_(that.str_data_)
{
}
//赋值操作符
M...
分类:
其他好文 时间:
2014-07-19 23:46:08
阅读次数:
350
1. 重载操作符
赋值操作符的返回类型应该与内置类型赋值运算返回的类型相同。内置类型的赋值运算返回对右操作数的引用,因此,赋值操作符也返回对同一类类型的引用。
例如,Sales_item的赋值操作符可以声明为:
class Sales_item {
public:
// other members asbefore
// equivalent to thesynthesized a...
分类:
编程语言 时间:
2014-07-17 15:04:54
阅读次数:
320
在
C++ 中,赋值和拷贝是不同的,
1)拷贝构造函数是对未初始化的内存进行初始化操作
2)而赋值是对现有的已经初始化的对象进行操作。(这里我对“已经初始化”的理解是已经调用了构造函数,并且构造函数体可以未执行,只要调用到即可),赋值函数应该给所有数据成员都初始化。
3)重点:包含动态分配成员的类
应提供拷贝构造函数,并重载"="赋值操作符。...
分类:
其他好文 时间:
2014-07-16 13:42:16
阅读次数:
186