02 2016 档案
摘要:赋值操作符 类赋值操作符接受类类型形参,通常,该形参是对类类型的 const 引用,但也可以是类类型或对类类型的非 const 引用。如果没有定义这个操作符,则编译器将合成它。类赋值操作符必须是类的成员,以便编译器可以知道是否需要合成一个。可以为一个类定义许多附加的赋值操作符,这些赋值操作符会因右操
阅读全文
摘要:转换与类类型 可用一个实参调用的非 explicit 构造函数定义一个隐式转换。当提供了实参类型的对象而需要一个类类型的对象时,编译器将使用该转换。这种构造函数定义了到类类型的转换。除了定义到类类型的转换之外,我们还可以定义从类类型的转换。即,我们可以定义转换操作符,给定类类型的对象,该操作符将产生
阅读全文
摘要:重载操作符的作用: 通过操作符重载,程序员能够针对类类型的操作数定义不同的操作符版本。程序用移位操作符(>> 和 <<)进行输入输出,用加号操作符(+)将两个 Sales_items 相加。 通过操作符重载,可以定义大多数操作符,使它们用于类类型对象。明智地使用操作符重载可以使类类型的使用像内置类型
阅读全文
摘要:先看一个例子: 定义了一个类: 再定义一个类Test: 当我们仅仅定义一个Test类对象test1时: 输出结果: 此时如果用test1初始化一个Test类对象test2: 输出结果为: 原因在于,给test2初始化的时候调用了Test类中的复制构造函数,而这个复制构造函数中: 又有对成员的初始化列
阅读全文
摘要:消息处理示例 有些类为了做一些工作需要对复制进行控制。为了给出这样的例子,我们将概略定义两个类,这两个类可用于邮件处理应用程序。Message 类和 Folder 类分别表示电子邮件(或其他)消息和消息所出现的目录,一个给定消息可以出现在多个目录中。Message 上有 save 和 remove
阅读全文
摘要:每种类型还定义了创建该类型的对象时会发生什么——构造函数定义了该类类型对象的初始化。类型还能控制复制、赋值或撤销该类型的对象时会发生什么——类通过特殊的成员函数:复制构造函数、赋值操作符和析构函数来控制这些行为。 复制构造函数是一种特殊构造函数,具有单个形参,该形参(常用 const 修饰)是对该类
阅读全文
摘要:类通常应定义一个默认构造函数 为了例示需要默认构造函数的情况,假定有一个 NoDefault 类,它没有定义自己的默认构造函数,却有一个接受一个 string 实参的构造函数。 定义这样的一个类没有错,这样编译会编译成功: class NoDefault { public: void output(
阅读全文
摘要:一个类: class Sales_item { public://程序的所有部分都可以访问带有 public 标号的成员。类型的数据抽象视图由其 public 成员定义。 // operations on Sales_item objects double avg_price() const; bo
阅读全文
摘要:IO标准库类型和头文件 出于某些原因,标准库类型不允许做复制或赋值操作。 ofstream out1, out2; out1 = out2; // error: cannot assign stream objects // print function: parameter is copied o
阅读全文
摘要:重载函数 出现在相同作用域中的两个函数,如果具有相同的名字而形参表不同,则称为重载函数。 使用某种程序设计语言编写过算术表达式的程序员都肯定使用过重载函数。表达式 1 + 3 调用了针对整型操作数加法操作符,而表达式 1.0 + 3.0 调用了另外一个专门处理浮点操作数的不同的加法操作。根据操作数的
阅读全文
摘要:举一个例子: class Sales_item { public: // operations on Sales_item objects double avg_price() const; bool same_isbn(const Sales_item &rhs) const { return i
阅读全文
摘要:有一个返回两个 string 形参中较短的字符串的函数: const string &shorterString(const string &s1, const string &s2) { return s1.size() < s2.size() ? s1 : s2; } 为这样的小操作定义一个函数
阅读全文
摘要:形参的初始化与变量的初始化一样:如果形参具有非引用类型,则复制实参的值,如果形参为引用类型,则它只是实参的别名。 非引用形参: 普通的非引用类型的参数通过复制对应的实参实现初始化。当用实参副本初始化形参时,函数并没有访问调用所传递的实参本身,因此不会修改实参的值。 while 循环体虽然修改了 v1
阅读全文

浙公网安备 33010602011771号