C++语言程序设计

我们也可以为Set类定义构造函数：
class Set {
public:
Set (void) { card = 0; }
//...
};
这样，当创建对象时，便不再需要调用EmptySet初始化，构造函数可确保每一个对象的初始状态为空。
Set类的最大元素个数是固定的，即为maxCard。其实，我们可以将elems定义为整型指针，而不是整型数组，就可以控制Set类的最大元素个数。将maxCard变成Set类的一个成员（对不同的集合对象，maxCard可能便不再相同），并在构造函数中定义一个形参指定所希望的的尺寸，构造函数只要简单地分配一个动态数组，并初始化maxCard和card即可：
class Set
{
public:
Set (const int size);
//...
private:
int *elems; // 集合元素
int maxCard; // 集合最大尺寸
int card; // 集合元素个数
};

Set::Set (const int size)
{
elems = new int[size];
maxCard = size;
card = 0;
}
现在便可以定义不同的最大尺寸：
Set ages(10), heights(20), primes(100);
注意：构造函数是在对象创建时被调用，对象何时创建与对象的作用域有关。例如，全局对象是在程序开始执行时创建，自动对象是当进入其作用域时创建，动态对象则是在使用new运算符时创建。
当用new运算符创建动态数组时，如：
elems = new int[size];
调用构造函数的顺序依次是elems[0]、elems[1]、…、elems[size-1]。由于new的调用格式是类型后面跟[元素个数]，不能再跟构造函数的参数，所以数组元素的初始化只能调用无参的构造函数，如果没有无参的构造函数，则会出现编译错误。