拷贝构造函数的参数类型必须是引用,而且通常情况下还是const的,但是const并不是严格必须的。
#include <iostream>
#include <string>
using namespace std;
class CClass
{
public:
CClass() : a(1), b("Hello, world.")
{
}
// 拷贝构造函数,参数中的const不是严格必须的,但引用符号是必须的
CClass(const CClass&...
转载自:http://www.udpwork.com/item/2452.html
感谢原作者,本人也被困扰了整一个晚上。
+++++++++++++++++++++++++++++++++++
这几天开始拜读侯捷先生和孟岩先生的译作《C++标准程序库:自修教程与参考手册》。两位先生确实译功上乘,读得很顺。但是读到P55页关于auto_ptr_ref的讨论,却百思不得其解:为什么需要引入auto_ptr_ref这个辅助类呢?
从书中描述来看,仿佛与拷贝构造函数、右值、类型转换有关。于是,结合auto_ptr的源代码,google之、baidu之,找了一推资料,终于初步搞清该问...
一. 在c中分为这几个存储区
1.栈 - 由编译器自动分配释放
2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收
3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放
4.另外还有一个专门放常量的地方。- 程序结束释放
...
1. 基本解释
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。
在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。
至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。
2. typedef & 结构的问题
当用下面的代码定义一个结构时,编译器报了一个错误,为什么呢?莫非C语言不允许在结构中包含指向它自己的指针吗?请你先猜想一下,然后看下文说明...
在StakeOverflow上有这样一个贴子叫“Confessions of your worst WTF moment”(WTF就是What the fuck的缩写),挺有意思的,我摘几个小故事过来,希望大家在笑过之后能从中学到什么——所有的经验都是从错误中来的(我在其中加了一些点评)我们公司的软件是给警察局用的,那是一个对用来处理被逮捕的人的系统,此系统还需要收集脸部特征和指纹信息,并且,这个系统和会向FBI的系统提交这些信息。当我们在测试这个系统的时候,我们一般都是用我们自己的指纹,当然,数据库联着的是我们的测试数据库。不过,有一次,在我们测试完后,我们忘了把系统切换回生产库,于是...
转自:http://pcedu.pconline.com.cn/empolder/gj/c/0412/514980_3.html mutable关键字 关键字mutable是C++中一个不常用的关键字,他只能用于类的非静态和非常量数据成员 我们知道一个对象的状态由该对象的非静态数据成员决定,所以随着数据成员的改变, 对像的状态也会随之发生变化! 如果一个类的成员函数被声明为const类型,表示该函数不会改变对象的状态,也就是 该函数不会修改类的非静态数据成员.但是有些时候需要在该类函数中对类的数据成员 进行赋值.这个时候就需要用到mutable关键字了 例如: class...
简而言之:explicit修饰的构造函数不能担任转换函数。首先这个关键字只能用在类构造函数。它的作用是不能进行隐式转换。当构造函数参数超过两个时自动取消隐式转换。但是另外一种情况例外:其中只有一个必须输入的参数,其余的为有默认值的参数。此时隐式转换又开启了。以下是 《ANSI/ISO C++ Professional Programmer's Handbook 》是这样说的explicit ConstructorsA constructor that takes a single argument is, by default, an implicit conversion operat...