《(4.8)--(09)静态成员面向对象程序设计.ppt》由会员分享,可在线阅读,更多相关《(4.8)--(09)静态成员面向对象程序设计.ppt(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向对象程序设计第章类与对象静态成员静态成员01.静态数据成员02.静态函数成员第4章类与对象静态成员静态成员的提出是为了解决数据共享的问题,它比全局变量在实现数据共享时更为安全,是实现同类多个对象数据共享的好方法。static类型标识符类型标识符静态数据成员名;静态数据成员名;+中将使用中将使用staic修饰的数据成员称为静态修饰的数据成员称为静态数数据据成员成员。声明声明静态数据成员静态数据成员:在类中增加用于共享的新的在类中增加用于共享的新的普通成员。普通成员。在类中设置一种在类中设置一种“特殊特殊”的的成员成员静态成员。静态成员。静态数据成员静态数据成员 静态成员函数静态成员函数cla
2、ss 类名类名 static 类型说明符类型说明符 成员名;成员名;;1.1.静态数据成员静态数据成员关于静态数据成员的几点说明:关于静态数据成员的几点说明:(1)静态数据成员不属于任何一个对象,而是属于类。(2)在一个类的对象空间内不包含静态数据成员的空间。(3)静态数据成员的存储空间的分配是在程序一开始运行时就被分配了,而并不是在程序运行过程中,在某一函数内进行空间分配和初始化的。(4)类的静态数据成员必须进行初始化,且初始化语句应当写在程序的全局区域中,并且必须指明其数据类型与所属类的类名,其格式表示如下:数据类型标识符数据类型标识符 类名类名:变量名变量名=值;值;(5)对于在类的pu
3、blic部分说明的静态数据成员,可以不使用成员函数而直接访问,格式是:类名类名:静态数据成员名静态数据成员名第4章类与对象静态成员第4章类与对象静态成员【例4-24】带有静态数据成员的Person类。#include using namespace std;class Person public:void set_name(string new_name);void set_age(unsigned new_age);string get_name()return name;unsigned get_age()return age;void disp();void walk()void ope
4、rate()static int count;private:string name;unsigned age;int Person:count=0;使用域限定符在类外初始化静态数据成员定义静态数据成员countint main()Person p;p.count=3;coutp.countendl;Person:count=5;coutPerson:countendl;2.静态数据成员的访问静态数据成员的访问(1)通过类名及域限定符直接访问 类名类名:静态数据成员名静态数据成员名(2)通过对象名访问 对象对象.公有静态数据成员公有静态数据成员=some_value;对象访问类名访问运行结果运
5、行结果35提醒提醒一般把静态数据成员的访问属性定义为private的,如果要对其进行访问等操作,可以通过相应的函数成员来实现。第4章类与对象静态成员3.静态函数成员静态函数成员静态成员函数是类的成员函数,。不属于类的任何对象静态函数成员只能改变类的静态成员。class 类名static 函数返回类型 函数名(形参列表);函数体;静态成员函数中数据成员的引用的区别对静态数据成员,直接引用对非静态数据成员,通过对象引用【例4-25】静态成员的作用示例。#include#include using namespace std;class Person public:Person(string new
6、_name,unsigned new_age);Person(const Person&p);Person()count+;void set_name(string new_name);void set_age(unsigned new_age);string get_name()return name;unsigned get_age()return age;void disp();static int getCount();private:string name;unsigned age;static int count;/定义静态数据成员count;4-13.mp4第4章类与对象静态成员
7、int Person:count=0;/使用域限定符在类外初始化静态数据成员Person:Person(string new_name,unsigned new_age)name=new_name;age=new_age;count+;Person:Person(const Person&p)name=p.name;age=p.age;count+;int Person:getCount()/静态函数成员在类外定义 return count;int main()Person p1,p2,p3;Person p4(xiaoming,21),p5(p4);cout当前Person类对象的个数为:;coutPerson:getCount()endl;return 0;【例【例4-25】静态成员的作用示例。】静态成员的作用示例。_上页续上页续当前当前Person类对象的个数为:类对象的个数为:5运行结果:本小节结束IloveyoumorethanIveeverlovedanywoman.AndIvewaitedlongerforyouthanIvewaitedforanywoman.Iloveyoumorethan谢谢谢谢大大家家
限制150内