C++语言程序设计

下面的情况是错误的：

| 程序段11-3

class A
{
public:
A(int n):a(n){}
int a;
};
class B
{
public:
int b;
};

A是B的基类，B是A的派生类，如果一个类定义了构造函数，那么编译器就不再为它生成缺省构造函数，这样A就不存在缺省构造函数。当程序中定义了一个类B的对象：
B b;
编译器会报告"no appropriate default constructor available"这样的错误，虽然编译器会为类B生成缺省的构造函数。在这种情况下，必须编写类B的构造函数，并在初始化表中调用基类的构造函数，进行初始化，例如：
B(int i,int j): A(i) {b=j;}
如果类中有另一个类的对象作为它的数据成员，该对象称为内嵌的对象。内嵌的对象应该先构造，所以，对它的初始化也应在初始化表中。例如：

| 程序段11-4

class B
{
public:
B(int I, int j):a(i),b(j){}
A a;
int b;
}