第8章---类与对象1.pptVIP

  • 2
  • 0
  • 约9.87千字
  • 约 48页
  • 2019-08-12 发布于福建
  • 举报
8.8 引用 8.8.1 引用标识符 C++中用 可派生出一个引用类型,即产生同一变量的另一个名字。引用在C++中非常普遍,主要用途是为用户定义类型指定操作,还可用于函数参数的传递,对引用型参数的操作,就是对实际参数的操作。例如: main() { int num=50; int ref=num; ref+=10; printf(num=%d,num); } 此程序的运行结果为: num=60 8.8.2 const和volatile const 和volatile是类型修饰符。在变量说明语句中,const 用于冻结一个变量,使其在程序中不能被修改。在用const 说明变量时, 必须对该变量进行初始化。用volatile修饰的变量,虽然在一段程序中没有明显被改动,单这个变量的值也会因为程序外部的原因(如中断等)而改变。 8.9 常类型 8.9.1 常引用 如果在说明引用时用const修饰,则被说明的引用为常引用。常引用所引用的对象不能被更新。如果用常引用做形参,便不会意外地发生对实参的更改。常引用的说明形式如下: const 类型说明符 引用名; 例如: const int n; 其中,n是一个常引用,它所引用的对象不会被更新。如果出现: n=123; 则是非法的。 常引用作形参,在函数中不能更新它所引用的对象,因此对应的实参不会被破坏。 8.9.2 常对象 常对象是指对象常量,定义格式如下: 类名 const 对象名; 或者 const 类名 对象名; 在定义常对象时必须进行初始化,而且不能被更新。只有常成员函数才能操作常对象,没有使用const关键词说明的成员函数不能用来操作常对象。 8.9.3 常对象成员 常对象成员包括常成员函数和常数据成员。 1. 常成员函数 使用const关键词说明的函数为常成员函数,常成员函数说明格式如下: 类型 函数名(参数表) const; 对于常对象成员需要注意以下几点: (1)const是函数类型的一个组成部分,因此在实现部分也要带const关键词。 (2)常成员函数不更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数。 (3)如果将一个对象说明为常对象,则通过该常对象只能调用它的常成员函数,而不能调用其他成员函数。 (4)const关键词可以参与区分重载函数。例如,如果在类中有说明: void print(); void print() const; 则这是对print的有效重载。 2. 常数据成员 就像一般数据一样,类的成员数据也可以是常量和常引用,使用const说明的数据成员为常数据成员。如果在一个类中说明了常数据成员,那么构造函数就只能通过初始化列表对该数据成员进行初始化。 类的成员函数也可以另外定义,而在类定义时给出函数头。 例8-2的成员函数可说明如下: void Location::init(int x,int y) { ??? X=x; ??? Y=y; }//将x,y的值分别赋给X,Y int Location::GetX() { ??? return X; } int Location::GetY() { ??? return Y; } 一个类的说明可分为定义性说明和引用性说明两种,引用性说明仅说明类名。例如:class Location; 引用性说明不能用于说明类的变量,但可说明指针,例如: class myClass{ ??????? int i; ??? myClass member;//错 ??? myClass *pointer;//对 }; 注意:在类定义体外定义成员函数时,需在函数名前加上类域标记,因为类的成员变量和成员函数属于所在的类域,在域内使用时,可直接使用成员名字,而在域外使用时,需在成员名外加上类对象的名称。 8.1.3 类和结构 结构是类的一种特例,在结构中也可以定义成员函数。定义结构时只要把关键字class 改为struct即可。 class Location { private: ??? int X,Y; public: ??? void init(int x,int y) ??? { ??????? X=x; ??????? Y=y; ??? } int GetX() ??? {??? return X;??? } int GetY() ??? {??? return Y;??? } }; 结构和类的唯一区别是:在未指定访问权限时,结构中的成员被默认为公有的而类中的成员被默认为

文档评论(0)

1亿VIP精品文档

相关文档