标签: C++Primer 学习记录 类
=default
来要求编译器生成默认构造函数。=
或者{}
表示,不能使用()
。
但是令类 B的成员函数是 A的友元,程序的设计就没那么简单了。既要满足声明和定义的彼此依赖关系,又要时刻注意防止头文件循环包含。
// 循环包含的例子
// A.h
#include "B.h"
// B.h
#include "A.h"
// B的成员函数是 A的友元的设计范例
// A.h
#include "B.h"
// B.h
class A;
// B.cpp
#include "A.h"
上面的代码中,类 A需要使用类 B的公有接口或数据,所以要在 .h文件中包含 B.h文件。而为了定义是 A的友元的类 B的成员函数,也需要 A的完整定义。所以在 B.cpp文件中需要包含 A.h文件。
X obj(); // 定义了一个函数而非对象
X obj; // 定义了一个对象
可以提供一个花括号括起来的成员初始化列表来初始化聚合类的数据成员。初始值的顺序必须与声明的顺序一致。
struct Data {
int ival;
string s;
};
Data val_1 = { 0, "Anna" };
// 错误,不能使用 const char*初始化 int
Data val_2 = { "Anna", 0 };
class Screen {
public:
// bkground表示一个在类中稍后定义的静态成员
Screen& clear(cahr = bkground);
private:
static const char bkground;
};