首页 > 代码库 > 7.1 定义抽象数据类型

7.1 定义抽象数据类型

  1. 每个类定义了唯一不同的类型,即使成员完全相同。
  2. 类名可作为类型的名字使用,Sales_data item1;默认初始化Sales_data类型的对象
  3. 类的声明,和函数一样,声明和定义分开,且也能仅声明类而暂时不定义它,称之为前向声明,向程序中引入名字Screen并指明这是一种类型(类类型),但是不清楚它到底包含了那些成员。不完全类型只能在非常有限的情景下使用:可定义指向自身类型的指针或者引用,也可声明(但是不能定义)以不完全类型作为参数或者返回类型的函数,如:
        
class Link_screen {
     int i;
     Link_screen *next;//定义自身类型的指针
     Link_screen *prev;
}
 
引申:必须在类的初始化列表中初始化的几种情况
  1. 类成员为const类型
  2. 类成员为引用类型
 
class Person {
     int &age;
     const string name;
     Person &chuandong;
     int height;
};
 
Person::Person(int &nAge, const string strName, Person &cd, int nHeight): age(nAge), name(strName), chuandong(cd)
{
     height = nHeight;
};
究其因
const对象或引用只能初始化,但是不能赋值。构造函数的函数体内只能赋值而不是初始化,因此初始化对象或者引用的唯一机会是构造函数体之前的初始化列表中。从无到有叫初始化,初始化(调用拷贝构造函数)创建了新对象;赋值(调用赋值操作符)没有创建新对象,而是对已有的对象赋值。
 
3.类成员为没有构造函数的类类型

7.1 定义抽象数据类型