软考程序员知识点C++语言程序设计之类与对象成员引用

程序员 责任编辑:小狐狸 2016-10-09

添加老师微信

备考咨询

加我微信

摘要:下面希赛小编为大家整理的软考程序员知识点C++语言程序设计之类与对象成员引用,希望能帮助学友们。

       

       >>>>>>立即点击了解程序员考试培训视频

       >>>>>>立即点击了解程序员考试教材

       >>>>>>立即点击了解程序员在线模拟考试


       下面希赛小编为大家整理的软考程序员知识点C++语言程序设计之类与对象成员引用,希望能帮助学友们。具体内容如下:


       运算访问成员

       例如在程序中可以写出以下语句:

       stud1.num=1001;//假设num已定义为公用的整型数据成员

       表示将整数1001赋给对象stud1中的数据成员num。

       其中“.”是成员运算符,用来对成员进行限定,指明所访问的是哪一个对象中的成员。

       注意不能只写成员名而忽略对象名。

       访问对象中成员的一般形式为

       对象名.成员名

       不仅可以在类外引用对象的公用数据成员,而且还可以调用对象的公用成员函数,但同样必须指出对象名,如

       stud1.display();//正确,调用对象stud1的公用成员函数

       display();//错误,没有指明是哪一个对象的display函数

       由于没有指明对象名,编译时把display作为普通函数处理。

       应该注意所访问的成员是公用的(public)还是私有的(private)。只能访问public成员,而不能访问private成员,如果已定义num为私有数据成员,下面的语句是错误的:

       stud1.num=10101;//num是私有数据成员,不能被外界引用

       在类外只能调用公用的成员函数。在一个类中应当至少有一个公用的成员函数,作为对外的接口,否则就无法对对象进行任何操作。

       指向访问成员

       class Time

       {

       public://数据成员是公用的

       int hour;

       int minute;

       };Time t,*p;//定义对象t和指针变量p

       p=&t;//使p指向对象t

       cout<<p->hour;//输出p指向的对象中的成员hour

       在p指向t的前提下,p->hour,(*p).hour和t.hour三者等价。

       对象访问成员

       如果为一个对象定义了一个引用变量,它们是共占同一段存储单元的,实际上它们是同一个对象,只是用不同的名字表示而已。

       因此完全可以通过引用变量来访问对象中的成员。

       如果已声明了Time类,并有以下定义语句:

       Time t1;//定义对象t1

       Time&t2=t1;//定义Time类引用变量t2,并使之初始化为t1

       cout<<t2.hour;//输出对象t1中的成员hour

       由于t2与t1共占同一段存储单元(即t2是t1的别名),因此t2.hour就是t1.hour。

       应用举例

       例1   

       最简单的例子。

       1.jpg

       运行情况如下:1232 43↙

       12:32:43

       注意:

       (1)在引用数据成员hour,minute,sec时不要忘记在前面指定对象名。

       (2)不要错写为类名,

       如写成

       Time.hour,Time.minute,Time.sec是不对的。因为类是一种抽象的数据类型,并不是一个实体,也不占存储空间,而对象是实际存在的实体,是占存储空间的,其数据成员是有值的,可以被引用的。

       (3)如果删去主函数的3个输入语句,即不向这些数据成员赋值,则它们的值是不可预知的。

       例2

       引用多个对象的成员。

       2.jpg

       22.jpg

       运行情况与程序(a)相同。

       (3)程序(c)

       可以对上面的程序作一些修改,数据成员的值不再由键盘输入,而在调用函数时由实参给出,并在函数中使用默认参数。将程序(b)第8行以下部分改为

       3.jpg

       程序运行时的输出为

       12:23:34(t1中的时、分、秒)

       0:0:0(t2中的时、分、秒)

       以上两个程序中定义的类都只有数据成员,没有成员函数,这显然没有体现出使用类的优越性。在下面的例子中,类体中就包含了成员函数。

       例3

       将例2的程序改用含成员函数的类来处理。

4.jpg

       运行情况与例2中的程序(a)相同。

       注意:

       (1)在主函数中调用两个成员函数时,应指明对象名(t1,t2)。表示调用的是哪一个对象的成员函数。

       (2)在类外定义函数时,应指明函数的作用域(如void Time∷set_time())。在成员函数引用本对象的数据成员时,只需直接写数据成员名,这时C++系统会把它默认为本对象的数据成员。也可以显式地写出类名并使用域运算符。

       (3)应注意区分什么场合用域运算符“∷”,什么场合用成员运算符“.”,不要搞混。

       例4

       找出一个整型数组中的元素的最大值。这个问题可以不用类的方法来解决,用类来处理,读者可以比较不同方法的特点。

       5.jpg

       运行结果如下:

       12 12 39-34 17 134 045-91 76↙(输入10个元素的值)

       max=134(输入10个元素中的最大值)

       请注意成员函数定义与调用成员函数的关系,定义成员函数只是设计了一组操作代码,并未实际执行,只有在被调用时才真正地执行这一组操作。

       可以看出:主函数很简单,语句很少,只是调用有关对象的成员函数,去完成相应的操作。

       在大多数情况下,主函数中甚至不出现控制结构(判断结构和循环结构),而在成员函数中使用控制结构。

       在面向对象的程序设计中,最关键的工作是类的设计。所有的数据和对数据的操作都体现在类中。

       只要把类定义好,编写程序的工作就显得很简单了。


       返回目录:软考程序员知识点C++语言程序设计汇总


    希赛软考网,拥有十四年软考培训经验,希赛网一直坚持自主研发,将丰富的软考培训经验有效融入教程研发过程,自成体系的软考在线题库软考历年真题)、软考培训教材软考视频教程,多样的培训方式包括在线辅导面授、和,使考生的学习更具系统性,辅导更具针对性。采用全程督学机制,,软考平均通过率在全国。

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

软考备考资料免费领取

去领取

!
咨询在线老师!