C++ programs 代码基本形式
- .h (header files) -- classes declaration
- .cpp --ex.cpp
- .h (header files) -- standard library
开始写代码
1.Header 中的防卫式声明 --
#ifndef __NAME__
#define __NAME__
0.
1.
2.
#endif
2.上图代码框中的1 --- class 的声明(declaration) --- 需要注意的点
- 类的声明分为两部分
class complex // class head
{
.... // class body
}
请将数据放在 private 中
constructor (ctor,构造函数) 的一种大气的写法 及 构造函数的特点
public:
complex (double r=0, double i=0)
: re(r), im(i) //initiaization list
{} //注意赋值与初始化的不同
- 函数名称 = 类名称
- 拥有参数
- 参数可以有默认值
- 没有返回类型
- constructor 的 overloading (重载)
- 重载常发生在构造函数身上
- 其实重载经过编译后实际名称是不同的
- const 的使用 -- 尽可能使用 const
- 当不会改变数据内容时,我们可以加 const
- 参数的传递 与 返回值的传递 :by value or by reference (to const)
- 如果可以的话,最好传引用
- by reference 传递速度快,但改变时会跟着改变,所以当不需要对方改时, 可以用 to const
- 在 return by reference 时,需要注意的一点是 -- 传递者无需知道接受者是以 reference 形式接受的
- 什么情况下可以 by reference ?
- local 变量,local 对象 这种在函数已结束,生命就消失的不能返回reference ,也就是说,返回局部对象的reference是错误的
- friends (友元)
- 相同 class 的各个 objects 互为 friends
3.上图代码框中的2 --- class body 之外的各种定义(definition) --- 操作符的重载(operator overloading)
- 成员函数的重载
- this 绑定到左侧运算对象,成员运算符函数的(显示)参数数量比运算对象的数量少一个
- 当我们定义重载的运算符时,必须首先决定选择为成员或者非成员,但是输入输出运算符必须时非成员函数,因为它的左侧对象必须是 istream 或 ostream
- 非成员函数的重载
- 没有 this
- 无论是成员函数还是非成员函数的重载,都需要考虑是否需要加 const 以及 是否需要 by reference