欢迎来到天天文库
浏览记录
ID:36808258
大小:253.00 KB
页数:37页
时间:2019-05-10
《第12章静态成员和友元》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第12章静态成员和友元学习要点:掌握静态成员和友元的概念熟练掌握如何定义和使用静态成员熟练掌握如何定义和使用友元12.1静态成员对象是类的实例,类刻划了一组具有相同属性的对象类中声明的成员变量属于实例化后的对象,有多个拷贝12.1静态成员参看第十一章对程序中生成的文件对象计数的例子为了计算生成的对象的个数,需要定义一个全局变量,以便在各个文件中都访问这个变量intFileCount=0;外部全局变量在整个程序中都是可见的,因此可以达到数据共享的目的对程序中生成的文件对象计数//file.cppexternintFileCount;//在主程序中定义的全局变量File
2、::File(char*name){length=0;strcpy(filename,name);contents=NULL;FileCount++;}File::File(File&srFile){length=srFile.length;strcpy(filename,"copyof");strcat(filename,srFile.filename);contents=newchar[length];strcpy(contents,srFile.contents);FileCount++;}修改类File,使能对程序中生成的文件对象计数File::~File(
3、){delete[]contents;FileCount--;}对程序中生成的文件对象计数#include#include“File.h”intFileCount=0;voidmain(){cout<<“Filenumber:“<4、类File,使能对程序中生成的文件对象计数程序的运行结果:Filenumber:0Filenumber:3Filenumber:2静态成员为了安全起见,在程序中很少用全局变量从封装和面向对象的角度,FileCount应属于File类FileCount是反映类的特性的,而不是某个对象Filef1,f2;多个对象之间如果要实现数据共享,可以使用静态的数据成员静态成员一个类的静态成员是用来表示类的属性的,而不是对象的属性的成员类定义中声明的静态变量被该类的对象所共享,即,对该类的所有对象,类的静态成员变量只有一个拷贝定义方法:在类成员前面加上static关键字静态成员分静5、态数据成员和静态成员函数静态数据成员公共静态数据成员可被类的外部访问,保护或私有的静态数据成员只可被类的内部访问。静态数据成员是类的所有对象的共享成员,而不是属于某个对象的成员。例如:classA{intx,y;staticintshared;.....};intA::shared=0;Aa,b;静态数据成员---注意静态数据成员作为全局变量,其存储空间是在类外分配的,因此静态数据成员不能在类内初始化,也不能用构造函数初始化静态数据成员。静态数据成员必须在类的实现部分初始化,初始化时不需要加static,但静态数据成员前面必须使用作用域运算符“::”来标明它所属的类6、。修改File类classFile{//….private:staticintFileCount;//私有的,外界不可直接访问//……}classFile{//….public:staticintFileCount;//公有的//……}静态变量也遵循类的访问控制例:看下面程序的运行结果classMyclass{public:voidGetSum(inta);staticintSum;private:intA;};voidPrintSum(Myclass&A){cout<<"Sum="<7、=10;//必须在类外部对静态数据成员初始化voidMyclass::GetSum(inta){A=a;Sum+=A;}voidPrintSum(Myclass&A){cout<<"Sum="<
4、类File,使能对程序中生成的文件对象计数程序的运行结果:Filenumber:0Filenumber:3Filenumber:2静态成员为了安全起见,在程序中很少用全局变量从封装和面向对象的角度,FileCount应属于File类FileCount是反映类的特性的,而不是某个对象Filef1,f2;多个对象之间如果要实现数据共享,可以使用静态的数据成员静态成员一个类的静态成员是用来表示类的属性的,而不是对象的属性的成员类定义中声明的静态变量被该类的对象所共享,即,对该类的所有对象,类的静态成员变量只有一个拷贝定义方法:在类成员前面加上static关键字静态成员分静
5、态数据成员和静态成员函数静态数据成员公共静态数据成员可被类的外部访问,保护或私有的静态数据成员只可被类的内部访问。静态数据成员是类的所有对象的共享成员,而不是属于某个对象的成员。例如:classA{intx,y;staticintshared;.....};intA::shared=0;Aa,b;静态数据成员---注意静态数据成员作为全局变量,其存储空间是在类外分配的,因此静态数据成员不能在类内初始化,也不能用构造函数初始化静态数据成员。静态数据成员必须在类的实现部分初始化,初始化时不需要加static,但静态数据成员前面必须使用作用域运算符“::”来标明它所属的类
6、。修改File类classFile{//….private:staticintFileCount;//私有的,外界不可直接访问//……}classFile{//….public:staticintFileCount;//公有的//……}静态变量也遵循类的访问控制例:看下面程序的运行结果classMyclass{public:voidGetSum(inta);staticintSum;private:intA;};voidPrintSum(Myclass&A){cout<<"Sum="<7、=10;//必须在类外部对静态数据成员初始化voidMyclass::GetSum(inta){A=a;Sum+=A;}voidPrintSum(Myclass&A){cout<<"Sum="<
7、=10;//必须在类外部对静态数据成员初始化voidMyclass::GetSum(inta){A=a;Sum+=A;}voidPrintSum(Myclass&A){cout<<"Sum="<
此文档下载收益归作者所有