C++编程(9)

Educn 115 this static friend beijing university

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: m; }; return *this; } Beijing University of Posts & Telecommunications Beijing young@buptnet.edu.cn 混合模式算术示例 complex operator+(complex a, complex b) { complex r=a; return r+=b; // 调用complex::operator+=(complex) } complex operator+(complex a, double b) { complex r=a; return r+=b; // 调用complex::operator+=(double) } complex operator+(double a, complex b) { complex r=b; return r+=a; // 调用complex::operator+=(double) } Beijing University of Posts & Telecommunications Beijing young@buptnet.edu.cn 11.3.3 初始化 我们可以使用标量对complex变量进行初始 化和赋值,为此,可以定义一个只有一个参 数的构造函数来解决这个问题 class complex{ double re, im; public: complex(double r) : re(r), im(0) {} complex(): re(0), im(0){} }; complex b = 3; complex c; Beijing University of Posts & Telecommunications Beijing young@buptnet.edu.cn 11.3.4 复制 除了显式的构造函数之外,complex还按照 默认规定,得到了一个定义好的复制构造函 数,默认的构造函数就是简单地复制成员, 这对于comple类来说已经足够好 class complex{ double re, im; public: complex(const complex& c) : re(c.re), im(c.im) {} }; Beijing University of Posts & Telecommunications Beijing young@buptnet.edu.cn 11.3.5 构造函数和转换 前面的例子中,我们为每个标准的算术运算定义了 三个版本 complex operator+(complex, complex); complex operator+(complex, double); complex operator+(double, complex); 若函数中需要处理的每个参数有三种类型,那么一 个参数的函数需要3个版本,两个参数的需要9个 版本,三个参数就需要27个版本,而且这些不同 版本的函数的代码实现会非常相似 依靠类型转换可以大大简化此类问题 Beijing University of Posts & Telecommunications Beijing young@buptnet.edu.cn 构造函数和转换示例 例如:complex类提供了一个构造函数,能够将 double转换到complex,因此,我们就只需要为 comple的==运算符定义一个版本 bool operator==(complex,complex); void f(complex x, complex y) { x == y; // operator==(x,y) x == 3; // operator==(x, complex(3)) 3 == y; // operator==(complex(3), x) } Beijing University of Posts & Telecommunications Beijing young@buptnet.edu.cn 11.3.6 文字量 不能为类类型定义文字量 但是,我们常常可以利用内部类型的文字 量,只需要通过类的成员函数对其提供一种 解释 当构造函数很简单并且被内联时,把这种以 文字量为参数的构造函数就看成是文字量也 是相当合理的 例如:可以把complex(3)看成是complex 类型的文字...
View Full Document

Ask a homework question - tutors are online