摘要:下面希赛小编为大家整理的软考程序员知识点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
最简单的例子。
运行情况如下:1232 43↙
12:32:43
注意:
(1)在引用数据成员hour,minute,sec时不要忘记在前面指定对象名。
(2)不要错写为类名,
如写成
Time.hour,Time.minute,Time.sec是不对的。因为类是一种抽象的数据类型,并不是一个实体,也不占存储空间,而对象是实际存在的实体,是占存储空间的,其数据成员是有值的,可以被引用的。
(3)如果删去主函数的3个输入语句,即不向这些数据成员赋值,则它们的值是不可预知的。
例2
引用多个对象的成员。
运行情况与程序(a)相同。
(3)程序(c)
可以对上面的程序作一些修改,数据成员的值不再由键盘输入,而在调用函数时由实参给出,并在函数中使用默认参数。将程序(b)第8行以下部分改为
程序运行时的输出为
12:23:34(t1中的时、分、秒)
0:0:0(t2中的时、分、秒)
以上两个程序中定义的类都只有数据成员,没有成员函数,这显然没有体现出使用类的优越性。在下面的例子中,类体中就包含了成员函数。
例3
将例2的程序改用含成员函数的类来处理。
运行情况与例2中的程序(a)相同。
注意:
(1)在主函数中调用两个成员函数时,应指明对象名(t1,t2)。表示调用的是哪一个对象的成员函数。
(2)在类外定义函数时,应指明函数的作用域(如void Time∷set_time())。在成员函数引用本对象的数据成员时,只需直接写数据成员名,这时C++系统会把它默认为本对象的数据成员。也可以显式地写出类名并使用域运算符。
(3)应注意区分什么场合用域运算符“∷”,什么场合用成员运算符“.”,不要搞混。
例4
找出一个整型数组中的元素的最大值。这个问题可以不用类的方法来解决,用类来处理,读者可以比较不同方法的特点。
运行结果如下:
12 12 39-34 17 134 045-91 76↙(输入10个元素的值)
max=134(输入10个元素中的最大值)
请注意成员函数定义与调用成员函数的关系,定义成员函数只是设计了一组操作代码,并未实际执行,只有在被调用时才真正地执行这一组操作。
可以看出:主函数很简单,语句很少,只是调用有关对象的成员函数,去完成相应的操作。
在大多数情况下,主函数中甚至不出现控制结构(判断结构和循环结构),而在成员函数中使用控制结构。
在面向对象的程序设计中,最关键的工作是类的设计。所有的数据和对数据的操作都体现在类中。
只要把类定义好,编写程序的工作就显得很简单了。
希赛软考网,拥有十四年软考培训经验,希赛网一直坚持自主研发,将丰富的软考培训经验有效融入教程研发过程,自成体系的软考在线题库(软考历年真题)、软考培训教材和软考视频教程,多样的培训方式包括在线辅导、面授、和,使考生的学习更具系统性,辅导更具针对性。采用全程督学机制,,软考平均通过率在全国。
软考备考资料免费领取
去领取