天天看点

侯捷老师C++大系之C++面向对象开发:(一)不带指针的类:Complex复数类的实现过程

一、笔记

1.C++编程简介

侯捷老师C++大系之C++面向对象开发:(一)不带指针的类:Complex复数类的实现过程
侯捷老师C++大系之C++面向对象开发:(一)不带指针的类:Complex复数类的实现过程
侯捷老师C++大系之C++面向对象开发:(一)不带指针的类:Complex复数类的实现过程

2.头文件与类的声明

防卫式声明

#ifndef __COMPLEX__

#define __COMPLEX__

……

#endif

头文件的布局

模板简介

template<typename T>

3.构造函数

inline函数:函数若在class body内定义完成,便自动成为inline候选人

访问级别:

public private

被外部访问的函数设为public

构造函数

complex (doble r=0,double i=0)

:re(r),im(i)

{ }

先初始化,后赋值

这种写法效率高

构造函数可以有很多个——重载

单例模式,构造函数放在private里,不允许外部创

4.参数传递与返回值

在函数后头加const

double real () const{return re;}

参数传递: pass by value vs. pass by reference(to const)

参数尽量传引用,如果不希望对方改加const

内化成习惯

返回值传递:return by value vs. return by reference(to const)

返回值也尽量传引用

friend(友元)

自由取得friend的private成员

相同class的各个objects互为friends(友元)

class body外的各种定义

什么情况可以传和返回引用,什么情况不可以:

两个参数相加,得到一个新的结果时不能传引用

5.操作符重载与临时对象

操作符重载之一,成员函数

操作符重载之二,非成员函数

临时对象

重载<<

二、代码

1.complex.h

2.complex_test.cpp