欢迎来到天天文库
浏览记录
ID:51617176
大小:115.50 KB
页数:33页
时间:2020-03-26
《C++程序设计基础 安志远ppt第3章 静态成员与友元.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章静态成员与友元1学习目标熟练掌握C++中静态数据成员的声明、定义及使用掌握C++中静态成员函数的定义及使用熟练掌握C++中普通函数作为友元函数的使用掌握C++中成员函数作为友元的使用掌握C++中类作为友元的使用23.1静态成员3.1.1静态数据成员3.1.2静态成员函数3.1.3静态成员使用33.1.1静态数据成员静态数据成员是类数据成员的一种特例。每个类只为静态数据成员分配一个存储空间,它由该类的所有对象共同拥有,从而实现了同一个类的不同对象之间的数据共享。静态数据成员具有静态生存期,在程序运行时就存在,直到程序运行结束
2、。43.1.1静态数据成员静态数据成员的声明,是在数据成员前面加关键字static。类的静态数据成员在使用前必须进行初始化,并且一定要在类外完成。其初始化的形式如下:<数据类型><类名>::<静态数据成员名>=<初始值>;例如:intWorker::total=0;53.1.1静态数据成员静态数据成员属于类,而不属于任何一个对象,所以,在类外只能通过类名对它进行引用。静态数据成员引用的一般形式如下:<类名>::<静态数据成员名>;63.1.1静态数据成员注意:静态数据成员同一般数据成员一样有访问控制限制。当静态数据成员被声明为私
3、有成员时,只能在类内直接引用它,在类外无法引用。当静态数据成员被声明为公有成员或保护成员时,可以在类外通过类名对它进行引用。73.1.1静态数据成员例3.1使用静态数据成员,统计工人的每周工作时间。#includeclassWorker{private:char*name;intworktime;public:staticinttotal;//用于统计总工作时间voidworkTime(intn);};voidWorker::workTime(intn){worktime=n;total+=n;}83.1
4、.1静态数据成员intWorker::total=0;//静态数据成员初始化voidmain(){Workerworker1,worker2,worker3;worker1.workTime(48);worker2.workTime(36);worker3.workTime(38);cout<<"Total="<5、员函数与类相联系,所以访问静态函数时,不需要使用对象。引用静态成员函数的一般格式:<类名>::<静态成员函数名>(<参数表>)103.1.2静态成员函数可以使用对象去引用静态成员函数。用这两种方法调用静态成员函数都是允许的,而且意义相同。静态成员函数可以直接引用该类的静态数据成员和成员函数,而不能直接引用非静态数据成员,如果要引用,必须通过参数传递的方式得到对象名,然后再通过对象名来引用。113.1.2静态成员函数例3.2用两种方法调用静态成员函数。#includeclassPerson{private:6、charname[20];staticintID;public:staticintnumber();};intPerson::number(){returnID;}123.1.2静态成员函数intPerson::ID=1001;voidmain(){Personp1;cout<<"类名引用:"<classM7、yclass{private:intm;//非静态数据成员staticintn;//静态数据成员public:Myclass();//构造函数staticintgetn(Myclassa);};Myclass::Myclass(){m=10;}143.1.2静态成员函数intMyclass::getn(Myclassa){cout<8、etn(app1)<#include<
5、员函数与类相联系,所以访问静态函数时,不需要使用对象。引用静态成员函数的一般格式:<类名>::<静态成员函数名>(<参数表>)103.1.2静态成员函数可以使用对象去引用静态成员函数。用这两种方法调用静态成员函数都是允许的,而且意义相同。静态成员函数可以直接引用该类的静态数据成员和成员函数,而不能直接引用非静态数据成员,如果要引用,必须通过参数传递的方式得到对象名,然后再通过对象名来引用。113.1.2静态成员函数例3.2用两种方法调用静态成员函数。#includeclassPerson{private:
6、charname[20];staticintID;public:staticintnumber();};intPerson::number(){returnID;}123.1.2静态成员函数intPerson::ID=1001;voidmain(){Personp1;cout<<"类名引用:"<classM
7、yclass{private:intm;//非静态数据成员staticintn;//静态数据成员public:Myclass();//构造函数staticintgetn(Myclassa);};Myclass::Myclass(){m=10;}143.1.2静态成员函数intMyclass::getn(Myclassa){cout<8、etn(app1)<#include<
8、etn(app1)<#include<
此文档下载收益归作者所有