复制控制--消息处理示例说明: 有些类为了做一些工作需要对复制进行控制。为了给出这样的例子,我们将概略定义两个类,这两个类可用于邮件处理应用程序。Message类和 Folder类分别表示电子邮件(或其他)消息和消息所出现的目录,一个给定消息可以出现在多个目录中。Message上有 save和 remove操作,用于在指定Folder中保存或删除该消息。数据结构: 对每个Message...
分类:
编程语言 时间:
2014-05-04 17:46:17
阅读次数:
510
复制控制--管理指针成员引言: 包含指针的类需要特别注意复制控制,原因是复制指针时只是复制了指针中的地址,而不会复制指针指向的对象! 将一个指针复制到另一个指针时,两个指针指向同一对象。当两个指针指向同一对象时,可能使用任一指针改变基础对象。类似地,很可能一个指针删除了一对象时,另一指针的用户还认为基础对象仍然存在。指针成员默认具有与指针对象同样的行为。 大多数C++类采用以下三种方法...
分类:
编程语言 时间:
2014-05-04 17:45:43
阅读次数:
458
C++ Primer Plus学习笔记之继承类的初始化顺序
基类的构造函数,析构函数和操作符函数operator=是不能被派生类继承的;
那么,当创建一个派生类对象时,怎样调用基类的构造函数对基类的数据进行初始化呢???
答案是:构造函数执行时遵行先兄长(基类),再客人(对象成员),后自己(派生类)的顺序;
另一方面,执行析构函数时,先执行派生类的析构函数,再执行基类的析构函数。原因是,对...
分类:
编程语言 时间:
2014-05-04 09:41:27
阅读次数:
373
C++ Primer Plus学习笔记之运算符重载...
分类:
编程语言 时间:
2014-05-04 09:21:08
阅读次数:
455
复制控制--析构函数引言: 在构造函数中分配了资源之后,需要一个对应操作自动回收或释放资源。析构函数就是这样的一个特殊函数,它可以完成所需的资源回收,作为类构造函数的补充。1、何时调用析构函数 撤销类对象时会自动调用析构函数: Sales_item *p = new Sales_item;
{
Sales_item item(*p); //调用复制构造...
分类:
编程语言 时间:
2014-05-03 21:09:42
阅读次数:
281
类--友元、static成员一、友元 友元机制允许一个类将对其非公有成员的访问权授予指定的函数或类(对未被授权的函数或类,则阻止其访问);友元的声明以关键字friend开始,但是它只能出现在类定义的内部。友元声明可以出现在类中的任何地方:友元不是授予友元关系的那个类的成员,所以它们不受其声明出现部分的访问控制影响。【最佳实践】 通常,将友元声明成组的放在类定义的开始或结尾是个好主意!1...
分类:
编程语言 时间:
2014-05-03 00:33:38
阅读次数:
372
复制控制--复制构造函数、赋值操作符引言: 当定义一个新类型时,需要显式或隐式地指定复制、赋值和撤销该类型的对象时会发生什么– 复制构造函数、赋值操作符和析构函数的作用! 复制构造函数:具有单个形参,该形参(常用const修饰)是对该类类型的引用。当定义一个新对象并用一个同类型的对象对它进行初始化时,将显式的使用复制构造函数;当将该类型的对象传递给函数或者从函数返回该类型的对象时,将隐...
分类:
编程语言 时间:
2014-05-02 07:48:27
阅读次数:
385
类--构造函数【下】二、默认实参与构造函数一个重载构造函数: Sales_item():units_sold(0),revenue(0){}
Sales_item(const std::string &book):
isbn(book),units_sold(0),revenue(0) {}
可以通过给string初始化式提供一个默认实参将这些构造函数组合起来: ...
分类:
编程语言 时间:
2014-05-01 08:17:52
阅读次数:
386
类--构造函数【上】引言: 构造函数确保每个对象在创建时自动调用,以确保每个对象的数据成员都有合适的初始值。class Sales_item
{
public:
//其中isbn由string的默认构造函数提供初始化
Sales_item():units_sold(0),revenue(0){}
private:
std::string isbn;
unsi...
分类:
编程语言 时间:
2014-04-30 22:48:40
阅读次数:
347
类--类作用域引言: 每个类都定义了自己的新作用域与唯一的类型。即使两个类具有完全相同的成员列表,它们也是不同的类型。每个类的成员不同与任何其他类(或任何其他作用域)的成员。class First
{
public:
int memi;
double memd;
};
class Second
{
public:
int memi;
double memd;...
分类:
编程语言 时间:
2014-04-30 22:26:39
阅读次数:
403