Boolan Week1笔记

(1)头文件的防卫式声明:

#ifndef __XXX__

#define __XXX__

 …

#endif

(2)class template

template

class XXX

{

//将类型换做T

}

{

//用时具体指定T的类型

XXX

XXX

}

(3)inline

函数若在class body内定义则自动成为inline候选人,否则可加inline,但是否会变成inline不确定。

(4)access level 访问级别

public 公开,private 私有,一般数据都需要private封存,有的函数也可以根据需要private。

(5)initialization list  初值列  (构造函数的特有用法)

XXX(T a=0, T b=0): A(a) , B(b) {}

//XXX为类名,()内可以设置初值, A/B为封存的数据

(6)const member functions 常量成员函数

double real() const { return re; }

// 不会改变数据内容的在 () 和 {} 之间加 const

(7)pass by reference 传引用

double //pass by value

complex& //pass by reference

// pass by reference 绝大多数时候优于 pass by value,尽量传reference,但如果函数内新产生的local object需要return,不可以传 reference。

//传递者无需知道接受者是以reference形式接收。

(8)friend 友元

private:

friend xxxx;

//可以自由取得 friend 的 private 成员


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

(9)operator overloading 操作符重载

inline complex&

complex::operator += (const complex& r)

{

        return __doapl (this, r);

}//成员函数会自动把操作符左边的数据存为this不能写出来,但可以使用

//全局函数无this

* cout 的重载

ostream& operator << (ostream& os, …)

{

return os << ‘ ’ << … ;

}

你可能感兴趣的:(Boolan Week1笔记)