C++学习笔记四
一览:
- 自动对象、静态局部对象
- 内联函数
- 类的成员函数、构造函数
自动对象、静态局部对象
自动对象:只有当定义它的函数被调用时才存在的对象称之为自动对象
自动对象,包括形参,都在定义它们的块语句结束时撤销
静态局部对象:就是C语言里面的static变量
内联函数
使用方法:加上inline关键字
优点:避免函数调用产生的开销
内联函数应当在头文件中定义
缺点:不好debug
成员函数
成员函数的函数原型必须在类中定义
成员函数的函数体既可以在类中定义也可以在类外定义
成员函数的定义
类的所有成员必须在类定义的花括号里面声明,此后不能再添加任何的成员(静态类型的语言)
编译器隐式地将类内定义的成员函数当作內联函数
类的成员函数可以访问该类的private成员
this指针
每个成员函数都有一个额外的、隐含的this指针
它将初始化为调用函数的对象的地址
使用:
成员函数中不必显式地使用this指针来访问成员
this->something == something
const成员函数
形式:将隐含的this指针修改为const类型的
bool CLASS::func(const CALSS *const this, ...)
常量成员函数:不能修改调用该函数的对象=>只能读取,不能修改
类外定义成员函数
类外定义的成员函数必须指明它们是类的成员
type CLASS::func(...)
{
...
}
构造函数
构造函数是特殊的成员函数
构造函数与成员函数同名,没有返回类型
一个类可以有多个构造函数
默认构造函数没有显式形参
构造函数的定义
同样的,必须在类中定义,但是也可以在类中或者类外定义。
- 构造函数的初始化列表:
在冒号和花括号之间的代码称之为构造函数的初始化列表
这个初始化列表为类的一个或者多个数据成员指定初值
默认构造函数
若没有为一个类显示定义任何构造函数,编译器将生成默认构造函数
合成的默认构造函数不会自动初始化内置类型的成员