上篇文章中,我们介绍了为什么应该彻底避免编写拷贝构造函数和赋值操作符。今天这篇我们讨论下为什么应该避免在析构函数中编写代码。即让析构函数为空。
例如:
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
第五章 操作符和表达式
这一章如果没做过玩过单片机、汇编的话,读起来可能比较吃力,尤其是在移位运算符、位运算符应用上。另外多注意一下左值和右值的理解。
总结:
算术操作符、赋值操作符、关系操作符、条件操作符。
短路求值(short-circuited evalution):如||这样的二目操作符,如果它的左操作数是真,右操作数便不再求值。带来的后果是如果右操作数的数组下标不...
分类:
其他好文 时间:
2014-07-12 22:42:37
阅读次数:
226
1. 使用assign
assign 操作首先删除容器中所有的元素,然后将其参数所指定的新元素插入到该容器中。与复制容器元素的构造函数一样,如果两个容器类型相同,其元
素类型也相同,就可以使用赋值操作符(=)将一个容器赋值给另一个容器。如果在不同(或相同)类型的容器内,元素类型不相同但是相互兼容,则其赋值运
算必须使用assign 函数。例如,可通过assign 操作实现将vector...
分类:
编程语言 时间:
2014-07-08 10:50:04
阅读次数:
199
好久没写博文了,添加一个练习题,选自《head_first_python》~~python列表:以中括号开始和结束"[]";列表项以逗号","分隔开,使用赋值操作符"="赋予一个标识符。如:movies=["theholy",1975,"terryjones",91,["graham",["michael","john","gilliam","idle","haha"]]]注释:1..
分类:
编程语言 时间:
2014-07-04 00:56:23
阅读次数:
596
前言
在c++中,一个变量的引用代表这个变量的别名。如果我们为一个变量定义了引用,则对该引用的操作等效于对所引用的变量的操作。那么,如果在一个函数中返回引用类型,将会产生什么样的现象?
引用作为返回值
下边写一个简单的程序演示引用作为返回值的情况。
class ts
{
public:
ts()
{
...
分类:
编程语言 时间:
2014-07-03 18:13:49
阅读次数:
255
单件模式:
单件模式即在整个应用程序中只有一个类实例且这个实例所占资源在整个应用程序中是共享的。
单件模式的C++实现(构造函数、拷贝构造函数、赋值操作符均需重写):
#include
class CSingleton
{
private:
CSingleton()
{
std::cout<<"Singleton Constructed."<<std:...
分类:
编程语言 时间:
2014-06-10 18:22:16
阅读次数:
258