1. 对象的感念
面向对象的编程方式就是根据问题所特定的对象类型来解决该问题,而不是采用计算机处理数字和字符的低级方式来解决问题。
在C++编程术语中,对象是数据类型的一个实例。例如:在定义一个变量时,常常使用下面的语句:
string saying = “A good horse cannot be of a bad color.”; |
这里定义了string类型的一个实例。我们给这个实例指定了名称,称之为saying。于是可以说,变量saying是类型string的一个对象。
类就是用户定义的数据类型,在大多数情况下,定义类时使用关键字class。
注意:不要把类和typedef语句或枚举的用法混淆了。typedef语句不创建新类型,只是为已有的类型定义一个别名。每个枚举都是一独特的类型。但它不是一个类。类是全新的、原始的类型,它不仅有一组惟一的属性,还有可应用于类对象的操作,这些完全是由用户定义的。
定制数据类型的另外两种方法:
· 联合:用union关键字来创建新类型。
· 结构:用struct关键字来创建新类型。
2. C++中的结构
实际上,C++结构的功能可以用类来替代。
结构的功能同样可以应用到类上。
定义结构类型
struct Book { char title[80]; char author[80]; char publisher[80]; int year; }; |
注意:这个声明没有定义任何变量,它指定了一个新类型Book。编译器会把这个定义用作蓝图,来创建类型Book的实体。
声明结构类型的变量
定义了结构Book后,如何定义这种类型的变量。定义Book类型的变量与定义其他类型的变量一样:
Book paperback; |
或者,下面3个语句定义了3个变量:
Book novel; Book* ptravel_guide; Book languae_guide[10]; |
可以定义结构类型时定义变量:
struct Book { char title[80]; char author[80]; char publisher[80]; int year; } dictionary, thesaurus; |
这个语句定义了类型Book,接着定义了这种类型的两个变量dictionary,thesaurus。
但是,最好把类型定义放在单独的一个语句中。一般情况下,需要使用任何数据类型时,类型定义放在头文件中,并把相应的头文件包含到.cpp文件中。
创建结构类型的对象
方法一:在初始化列表中为数据成员定义初始值。
Book novel = { "Feet of Clay ", "Terry Pratchett ", "Victor Gollanz ", 1996 }; |
提示:如果Book的成员是类类型,如string,就不能以这种方式初始化Book对象。原因是类类型的对象只能通过调用一个特殊的函数即构造函数来创建。也就是说,结构不是一个聚合。
方法二:也可以初始化结构变量的数组,方法与初始化多为数组一样。如:
Book novel[] = {"Feet of Clay ", "Terry Pratchett ", "Victor Gollanz ", 1996}, {"Tring to Save Piggy Sneed ", "Bloomsbury ", "John Irving & |