c++programs的代码基本形式
1.头文件(功能模块的声明)
2主函数
3其他函数的定义
头文件中的防卫式声明
当我们使用#include包含.h文件是,为了避免出现重复定义的现象,比如在头文件中定义了一个类,如果在把头文件包含到一个定义了与他相同类的.cpp的文件中,那么就会由于重复定义出现编译错误。所以防卫式声明是十分的有必要。形式如下
#ifndef HEAD_H(大写不是必须的)
#define HEAD_H
......
#endif
inline(内联)函数
与预处理类似,在编译期间直接计算出结果,但是是否是一个内联函数取决于编译器,一般比较简单的函数都可以实现内联。
访问级别
public 类的外部接口
private 只可以由本类成员访问,外部访问非法
protect 与私有相似,区别在于继承
friend友元
改变访问级别,使得外部函数也可访问类类型对象的所以数据和功能
void friend comple();
所以可以说class的各个函数互为friend函数
构造函数
与内置类型的初始化相似,由类定义的类类型,构造函数决定了类类型对象的初始化方式。
无返回值,支持默认参数的初始化,重载,内联
注意:若定义了参数及其类型相同的两个构造函数,一个有默认值一个没有,这种情况是未定义的,因为编译器将这两个函数视为相同的。
私有构造函数
因为是私有成员所以不能被外部访问,但可以在内部定义对象,如果将其定义为static,那么就可以得到一个单对象。
常成员函数
在成员函数的参数表后面加const(顶层const)(数据只读)
1.常成员函数不能更新对象的数据成员
2.当一个对象被声明为常对象,则不能通过该对象调用该类中的非const成员函数
传值 与 传参
传值相当与拷贝一份备份
传参相当于传递一个指针
操作符的重载
成员函数:对于一个2元操作符来说的重载函数直接一个参数,左边是参数是默认的为其类类型对象,右边参数是操作是另一个对象,
非成员函数:对于2个操作数的重载函数要两个参数,不可以重载内置类型的操作符重载。
临时对象
typname()
如果没被保存,执行完这条语句就将消失。