- 1
- 0
- 约4.86千字
- 约 26页
- 2017-01-01 发布于重庆
- 举报
第6章 静态成员与友元 6.1 静态成员 6.2 友元函数 6.3 友元类 6.1 静态成员 6.1.1 静态数据成员 6.1.2 静态成员函数 6.1.1 静态数据成员 C++中,同一个类定义多个对象时,每个对象拥有各自的数据成员(不包括静态数据成员),而所有对象共享一份成员函数和一份静态数据成员。静态数据成员是类的所有对象中共享的成员,而不是某个对象的成员,因此可以实现多个对象间的数据共享。静态数据成员不属于任何对象,它不因对象的建立而产生,也不因对象的析构而删除,它是类定义的一部分,所以使用静态数据成员不会破坏类的隐蔽性。 静态数据成员的使用方法如下: (1)静态数据成员的定义与一般数据成员相似,但前面要加上static关键词。 (2)静态数据成员的初始化与一般数据成员不同,静态数据成员初始化的格式如下: 类型 类名::静态数据成员=值; (3)在引用静态数据成员时采用格式: 类名::静态数据成员 (4)静态数据成员是静态存储的,它是静态生存期,必须对它进行初始化。 例6-1:用静态数据成员实现班会费管理程序。 #includeiostream.h class person { char* name; int age; static int count; //定义静态成员,存放班会费 public: void setData(char* s,int n){name=s;age=n;}; void getData(int n){count=count+n;}; void spend(int n){count=count-n;}; void display(){coutcountendl;}; }; int person::count=0; //为静态数据成员分配空间和初始化 void main() { person demo1,demo2; demo1.setData(Robert,21); demo2.setData(Mary,18); demo1.getData(1000); demo2.display(); //输出1000 demo2.spend(300); demo1.display(); // 输出 700 } 6.1.2 静态成员函数 静态成员函数与静态数据成员类似,也是从属于类,静态成员函数的定义是在一般函数定义前加上static关键字。调用静态成员函数的格式如下: 类名::静态成员函数名(参数表); 静态成员函数与静态数据成员一样,与类相联系,不与对象相联系,只要类存在,静态成员函数就可以使用,所以访问静态成员函数时不需要对象。静态成员函数没有this指针,因此,静态成员函数只能直接访问类中的静态成员,若要访问类中的非静态成员时,必须借助对象名或指向对象的指针。 例6-3:用静态成员函数实现班会费管理程序。 #includeiostream.h class person { char* name; int age; static int count; //定义静态成员,存放班会费 public: void setData(char* s,int n){name=s;age=n;}; void getData(int n){count=count+n;}; void spend(int n){count=count-n;}; static void display(){coutcountendl;}; //定义静态成员函数 }; int person::count=0; //为静态数据成员分配空间和初始化 void main() { person demo1,demo2; demo1.setData(Robert,21); demo2.setData(Mary,18); demo1.getData(1000); person::display(); //用类名去调用静态成员函数 demo2.spend(300); demo1.display(); //用对象的类型去调用静态成员函数 } 例6-4:写出下面程序的执行结果。 #include iostream.h class M { public: M(int a){ A=a;B+=a;} static void f1(M m); private: int A; static int B; }; void M::f1(M m) { coutA=m.Aendl; //在静态成员函数中,只能通过对象访问类的非静态成员 coutB=Bendl; //B是静态成员,可以在静态成员函数中访问 } i
您可能关注的文档
最近下载
- 2021年上海市嘉定区中考英语二模试卷含解析.pdf VIP
- 2025年广东省普通高中学业水平选择性考试生物(详解版).docx VIP
- 宁德市2025-2026学年(上期)高二期末考试数学试卷(含答案).pdf
- 鄂尔多斯职业学院单招《职业适应性测试》真题(达标题)附答案详解.docx VIP
- 2025年四川中科《浅谈肥胖治疗新进展》继续教育习题答案.docx VIP
- 小学三年级数学测量单元试题.docx VIP
- 三菱变频器使用手册-FR-E540 中文版.pdf VIP
- 小升初语文练习题6年级语文.pdf VIP
- 8.1 0—3岁婴幼儿心理发展评价(课件)《0-3岁婴幼儿心理发展与教育》(华东师范大学出版社).pptx VIP
- 《测量》习题3.doc VIP
原创力文档

文档评论(0)