Stock mystuff[4];
当程序创建违背显式初始化的对象时,总是调用默认构造函数。(要么没有显式的定义任何构造函数,要么定义了一个显示默认构造函数)。
如果类包含多个构造函数,可以对不同的元素使用不同的构造函数。
初始化对象数组的方法是:首先使用默认构造函数创建数组元素,然后花括号中的构造函数将创建临时对象,然后将临时对象的内容复制到相应的元素中。因此,要创建类对象数组,则这个类必须有默认构造函数。
修改类的私有部分和实现文件属于实现更变,修改类的公有部分属于接口变更。实现变更改变了类的内部工作原理,接口变更改变了使用类的人可用的编码方式。
在类中定义的名称(如类数据成员和类成员函数名)的作用域都为整个类,作用域为整个类的名称只在该类中是已知的,在类外是不可知的。因此,可以在不同类中使用相同的类成员名而不会引起冲突。
类作用域意味着不能从外部直接访问类的成员,公有成员函数也是如此。也就是说,要调用公有成员函数,必须通过对象。
作用域为整个类的常量
第一种方式是在类中声明一个枚举。在类声明中声明枚举的作用域为整个类,因此可以用枚举为整形常量提供作用域为整个类的符号名称。用这种方式声明枚举并不会创建类数据成员。也就是说,所有对象中都不包含枚举。Len只是一个符号名称,在作用域为整个类的代码中遇到它时,编译器将用30来替代它。
class Stock
{
private:
enum{Len=30};
char company[Len];
...
}
C++ 引入了另一种在类中定义常量的方式。这将创建一个名为Len的常量,该常量与其他静态量存储在一起,而不是存储在对象中,因此,只有一个Len常量,它被所有Stock对象共享。只能使用这种技术声明值为整形或枚举类型的静态常量,而不能存储double常量。
class Stock
{
private:
static const int Len=30;
char company[Len];
...
}