第7章 深入C++Builder面向对象.pptVIP

  • 8
  • 0
  • 约1.11万字
  • 约 58页
  • 2018-06-23 发布于浙江
  • 举报
第7章 深入C++Builder面向对象技术 7.1 类和对象 7.2 对象的属性与事件 7.3 VCL类库的结构 7.4 流与文件 7.1 类 和 对 象 类是面向对象程序设计的核心,它实际上是一种新的数据类型,也是实现抽象数据类型的工具。类描述了数据结构(对象属性)、算法(方法)和外部接口(消息协议),因而提供了完整的解决问题的能力。 7.1.1 类的访问属性 类的访问属性分为三个级别:private(私有)、public(公有)和protected(保护)。在任何类中,都有外部可以访问的public部分和仅供内部访问的private部分。类将内部实现细节隐藏起来,使类的用户不用对此操心,而用户接口是公开的。一般将成员数据设置为private,对这些数据的访问可通过它的某些成员函数来访问,而这些成员函数将被声明为public。访问级别为保护的类成员和私有的类成员相似,该类的用户不能访问,但它的派生类的用户可以访问该派生类中相应的成员。 例如,下面的代码定义了BankAccount类: class BankAccount { private: float balance; unsigned accountNumber; public: void deposit (float amount) { balance+= amout; } void withdraw (float amout) { balance-= amout; } float getbalance ( ) { return balance; } }; BankAccount类具有两个数据成员:balance和accountNumber,分别表示存款余额和账号,它们是私有成员。该类还具有三个方法:deposit、withdraw和getbalance,分别用于存款、取款和查询余额,它们都是公有成员。用户程序不能直接对balance进行存取,必须调用有关的方法deposit或withdraw才能修改balance,实现了对重要数据成员的保护。 7.1.2 对象与this指针 C++在为类建立对象实例时,系统定义了一个指向该对象的指针。该指针被命名为this,可以用在成员函数中。因此,我们可以将this指针想像成一个隐式指针,即对于类X,系统事先定义了X *this(指向X的指针),并且将对象的地址赋给this,this是该对象的一个局部变量。在上述BankAccount类中,void deposit (float amount) 方法中使用的balance+=amout 等价于this-balance+=amout。 在C++中,类中所有的方法对数据成员进行存取,都是利用this通过指针方式处理的。在大多数场合下,C++允许我们忽略this指针,而直接使用以变量方式存取所说明的成员。 7.1.3 构造函数与析构函数 建立一个类的对象实例时,编译系统要为该对象分配存储空间并进行必要的初始化工作,这些工作由类的构造函数来完成。C++的构造函数是类的一种特殊的成员函数,其函数名必须与类名相同。该函数可以含有任意类型的参数,但不能有返回值。如果未在类声明中说明构造函数,则系统以缺省方式定义一个构造函数,该构造函数将对象中所有的数据成员都初始化为零。这不一定符合使用的要求,因此,实际上很少使用缺省的构造函数。 构造函数的函数体可写在类体之内,也可以写在类体之外。构造函数还可以被重载,即可以为一个类定义多个参数个数和类型不同的构造函数。 在创建对象时系统会自动调用构造函数,用户程序中不能直接调用构造函数。 当采用静态方式建立对象时,构造函数在执行对象说明语句时被调用。当采用动态方式建立对象时,则构造函数在执行new运算符时被调用。BCB的VCL对象一般都采用动态方式建立,例如: TForm* Form1; Form1=new (TForm); 下面的例子是在BankAccount类中添加了一个构造函数。 class BankAccount { private: float balance; unsigned accountNumber; public: void deposit (float amount) { balance+= amout; } void withdraw (float

文档评论(0)

1亿VIP精品文档

相关文档