第三章
3.6 引用类型
定义一个引用时,必须初始化,且被初始化后不得改为指向其他对象。
3.8 内联函数
不能有循环语句和switch语句
3.9 constexpr函数
编译期间可计算的函数,可以用来初始化常量
3.11 函数重载
编译器不以返回值来区分函数。
第四章
4.3.1 类定义
class 类名称
{
public: 公有成员(外部接口)
private: 私有成员
protected: 保护型成员
};
类的成员函数
- 在类中声明函数原型,在类外给出函数体实现
- 在类内直接给出函数体,形成内联成员函数
4.4.1 构造函数
构造函数可以重载
初始化列表
Clock::Clock(int newH, int newM, int newS):
hour(newH), minute(newM), second(newS){
}
4.4.4 委托构造函数
Clock::Clock(): Clock(0,0,0){
}
4.4.5 复制构造函数
形参为本类对象的引用(引用加const)
public:
Clock(const Clock &a);
}
复制构造函数被调用的三种情况
- 定义时以本类另一个对象作为初始值
- 调用函数时,使用实参对象初始化形参对象
- 返回值是类的对象
4.5 析构函数
public:
~Clock();
4. 6. 1 类的组合
首先对初始化列表中列出的成员进行初始化,初始化次序设成员在类体中定义的次序,无出现的调用默认构造函数
4.6.3 前向引用声明
class B;
class A{
public:
void f(B b);
}
class B{
public:
void f(A a);
}
4.8.1 结构体
默认数据为public,特殊的类
4.8.2 联合体
成员公用同一联合体。
union Mark{
char grade;
bool pass;
int percent;
};
4.8.3 枚举类
enum class 枚举类型名:底层类型{
枚举值列表};
强作用域,其作用域限制在枚举类中
Type::General
转换限制,枚举类对象不可以与整型隐式地互相转换
第五章
5.2 标识符的作用域与可见性
作用域
- 函数原形作用域,作用域仅限于()
- 局部作用域
- 类作用域
- 文件作用域:开始于声明点,结束于文件结束
5.2 对象的生存期
静态生存期
与程序的运行期相同:在文件作用域中声明的对象,块作用域中声明的用static修饰的对象,只会被初始化一次,不初始化默认为0。
动态生存期
每次进入作用域,都重新初始化
5.3.1 类的静态数据成员
- 用关键字static声明
- 为该类的所有对象共享,静态数据成员具有静态生存期
- 必须在类外定义和初始化
class Point{
private:
int x,y;
static int count;
public:
Point(int x=0, int y=0):x(x), y(y){
count++;
}
}
int Point::count = 0;
5.3.1 类的静态函数成员
静态函数用来处理静态数据,不知道哪个对象调用的静态函数
class Point{
public:
static void showCount(){
cout<<"Object count = "<< count << endl;
}
}
void main(){
Point::showCount();
}
5.4 类的友元
class Point{
public:
friend float dist(Point &a, Point &b);
}
float dist(Point &a, Point &b){
double x = a.x - b.x;