

























#ifndef __COMPLEX__
#define __COMPLEX__
#include <iostream.h>
class complex //前置申明
class complex
{
...//类声明
}
complex::function()...//类定义
#endif
class complex //class head
{ //class body
public:
complex (double r = 0, double i = 0): re (r), im (i) { }
complex& operator += (const complex&);
double real () const { return re; } //函数在body内定义,则自动成为inline候选人
double imag () const { return im; }
private:
double re, im;
friend complex& __doapl (complex *, const complex&);
};
构造函数是类中非常重要的函数,在类创建的时候由系统自动调用
complex (double r = 0, double i = 0)//默认参数,在不传参的时候直接使用默认值
: re (r), im (i) //初始值列表,在创建成员的时候直接赋值,比在创建之后赋值效率高
{ }
double real () const { return re; }
在函数名后面加const修饰符,一般情况下加const表示这个函数不会修改内部的成员变量。能加的尽量加上const。
const complex a(1,2);//由于a是const的,而类的设计者在设计real()的时候没有const,调用会报错
a.real();
值传递会发生拷贝,当传递比较大的数据时,拷贝是一件很费时间和效率的事情,所以在传值和引用之间首选传引用,但是需要考虑有些时候是不能传引用的,比如临时对象
自由取得friend的private成员 相同class的各个object互为友元
操作符重载可以看做是特殊的函数,可以是成员函数,也可以是非成员函数,如果是成员函数的话,默认第一个参数是this指针,一般不写。

这种情况下就不能写成是成员函数了,因为和其它类型的对象相加

这种情况下,返回的是临时对象,临时对象返回值绝对是不能用引用的
返回值在什么情况下,不能使用pass by reference?
如果函数的返回值是在函数体内部临时创建用来存放结果值(是local的),那么在函数结束时这个临时对象的生命周期就结束了【虽然仍然可以吧reference传递出来但是是错误的】。这种情况则不能使用pass by reference。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。