文档库

最新最全的文档下载
当前位置:文档库 > C++程序设计第五章

C++程序设计第五章

第五章

特殊函数和成员

5.1对象成员的初始化

如果初始初始化列表某项的参数函数表为空,则列表相应的项可以省略

对象成员构造函数的调用顺序取决于这些对象成员在类中的说明顺序。

析构函数的调用顺序与构造函数正好相反。

5.2静态成员

简单成员函数是指声明函数不含const、volatile、static关键字的函数。如果类的数据成员或成员函数使用关键字static进行修饰,这样的成员称为静态成员或静态成员函数,统称为静态成员。

静态数据成员能说明一次,如果在类中仅对静态数据成员进行声明,则必须在文件作用域的某个地方进行定义。在进行初始化时,必须进行成员名限定。

除静态成员的初始化之外,静态成员遵循类的其他成员函数所遵循的访问限制,

由于数据隐蔽的需要,静态数据成员通常被说明为私有的,

通过成员限定访问静态成员,比使用对象名访问静态成员要好,因为静态成员是类的成员而不是对象的成员。

类中的任何成员都可以访问静态成员。因为静态成员函数没有this指针,所以静态成员函数只能通过对象名(或指向对象的指针)访问该对象的非静态成员。

(1)可以不指向某个具体的对象,只与类名连用。

(2)在没有建立对象之前,静态成员就已经存在。

(3)静态成员为类的成员,不是对象的成员。

(4)静态成员为该类的所有对象共享,它们被存储于一个公用内存中。

(5)没有this指针,所有除非显式地吧指针传给它们,否则不能存取类的数据成员。

(6)静态成员函数不能被说明为虚函数。

(7)静态成员函数不能直接访问非静态函数。

关键字static声明的类的对象,但要注意它的构造函数与析构函数的调用特点。

5.3友员函数

友员函数可以存取私有成员、公有成员和保护成员。

1.类本身的友元函数

2.将成员函数做有元

3.将一个类说明为另一个类的友元

友元关系是不传递的即当说明类A是类B的友元,类B又是类C的友元时,

5.4 const对象

可以再使用const关键字定义数据成员和成员函数和修饰一个对象。一个const对象只能访问const 成员函数。

1常量成员

常量成员包括常量数据成员、静态常数据和引用。静态常数成员仍保留静态成员特征,需要在类外初始化。常数据成员和常引用只能通过初始化列表来获得初值。

2常引用作为函数参数

使用引用作为函数参数,传送的是地址。

3常对象

在对象名前使用const声明常对象,但声明是必须同时进行初始化,而且不能被更新。

4常成员函数

一个const对象可以调用const函数,但不能调用非const成员函数。Const放在函数声明之前意味着返回值是常量,

为了保证不仅声明const成员函数,而且确定也定义为const函数,程序员在定义函数时、必须重申const声明。

普通对象可以使用全部成员函数,但常量对象只能使用常量函数。

5.5 数组和类

5.6指向类成员函数的指针

C++既包含指向类数据成员的指针,又包含指向成员函数指针。

类并不是对象,但有时可将其视为对象使用。可以声明并使用指向对象成员函数的指针。

5.7 求解一元二次方程

5.7.1 设计代表方程的类

5.7.2设计成员函数

1.设计构造函数

2.设计成员函数

5.7.3编程实现

1设计工程和文件

2头文件

3实现类

5.7.4使用VC编制完整的文件

5.7.5 运行示范