类规范由两个部分组成:
- 类声明:以数据成员的方式描述数据部分,以成员函数(被称为方法)的方式描述公有接口。
- 类方法定义:描述如何实现类成员函数。
通常,C++程序员将接口(类定义)放在头文件中,并将实现(类方法的代码)放在源代码文件中。
1 访问控制
关键字private和public描述了对类成员的访问控制。使用类对象的程序都可以直接访问公用部分,但只能通过公用成员函数(或友元函数)来访问对象的私有成员。因此,公用成员函数是程序和对象的私有成员之间的桥梁,提供了对象和程序之间的接口。防止程序直接访问数据被称为数据隐藏。
2 控制对成员的访问:公有还是私有
无论类成员是数据成员还是成员函数,都可以在类的公有部分或私有部分中声明它。但由于隐藏数据是oop主要的目标之一,因此数据项通常放在私有部分,组成类接口的成员函数放在公用部分;否则,就无法从程序中调用这些函数。也可以将成员函数放在私有部分,这样不能直接从程序中调用这种函数,但公用方法却可以使用它们。通常,程序员使用私有成员函数处理不属于公有接口的实现细节。
不必在类声明中使用关键字private,因此这是类对象的默认访问控制:
3 实现类成员函数
还需要创建类描述的第二部分:为那些由类声明中的原型不是的成员函数提供代码。成员函数定义与常规函数定义非常相似,它们有函数头和函数体,也可以有返回类型和参数。都是它们还有两个特性的特征:
1)定义成员函数时,使用作用域解析运算符(::)来标识函数所属的类;
2)类方法可以访问类的private组件。
4 内联函数
其定义位于类声明中的函数都将自动称为内联函数。
如果愿意,也可以在类声明之外定义成员函数,并使其成为内联函数。为此,只需在类实现部分中定义函数时使用inline限定符即可:
class Stock
{
private:
......
void set_tot();
public:
.......
};
inline void Stock::set_tot()
{
total_val=shares*share_val;
}
内联函数的特殊规则要求在每个使用它们的文件中都对其进行定义。确保内联定义对多文件程序中的所有文件都可用的、最简便的方法是:将内联定义放在定义类的头文件中。
根据改写规则,在类声明中定义方法等同于用原型函数替换方法定义,然后再类声明的后面将定义改写为内联函数。也就是加上inline。
所创建的每个新对象都有自己的存储空间,用于存储其内部变量和类成员。但同一个类的所有对象共享同一组类方法,即每种方法只有一个副本。
类的设计步骤小结: