- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
class Date { private: int year, month, day; public: Date(int y, int m, int d) { year=y; month=m; day=d; } friend class Clock; //声明Clock类为Date类的友元类 }; class Clock //声明Clock类 { public: void ShowNowDate(Date now); }; void Clock::ShowNowDate(Date now) { coutnow.year“年”now.month“月”now.day“日”; } void main() { Date NowDate(2008,10,8); //声明Date类的对象 Clock myClock; //声明Clock的对象 myClock.ShowNowDate(NowDate); } 案例11 友元类的应用。 2008年10月8日 静态成员是满足在某些情况下数据共享的需求。全局对象是实现数据共享的一种方法,但是,它有一定的局限性,因为它处处可见,因此不够安全。为了安全起见,要实现多个数据的共享,可使用静态成员。 静态成员不属于某个对象,而属于类。 静态成员的分类 静态数据成员 静态成员函数 7.6 静态成员 7.6.1 静态数据成员 静态数据成员是同一个类中所有对象共享的成员,而不是某一对象的成员。一个类的静态数据成员只存储在一处,供该类所有对象共享访问。 如果需要把某一数据成员声明为静态成员,只需在其前面加关键字static。由于静态数据成员是静态存储的,它具有静态生存期。 注 声明类时说明的静态数据成员只是一种引用性声明,而且在声明对象时,由于静态数据成员的特殊性,并不会为之分配内存。要求单独对静态数据成员进行定义性声明,以获得相应的存储空间并赋值。必须在类体外进行初始化。 注 使用作用域运算符“::”,说明静态数据成员所属的类; 静态数据成员的初始化与构造函数和析构函数无关; 初始化时,不加关键字static; 静态数据成员的值可以被更新; 静态数据成员属于类,即被该类的所有对象所共有。 静态数据成员初始化格式如下: 类型 类名::静态数据成员名= 值; 例如: int A::sum=0; 静态数据成员声明格式如下: static 类型 静态数据成员名; 例如: static int sum; 在类内 在类外 class A { public: A(int x,int y) //构造函数 { a=x; b=y; } ~A( ){ } //构造函数 void getXY() //成员函数 { coutX=a\tY=bendl; } void getSUM() //成员函数 { sum=sum+a+b; coutSUM=sumendl; } private: int a,b; static int sum; //静态数据成员声明 }; int A::sum=0; //静态数据成员在类体外的初始化 void main() { A a1(1,2); a1.getXY(); a1.getSUM(); A a2(3,4); a2.getXY(); a2.getSUM(); } X=1 Y=2 SUM=3 X=3 Y=4 SUM=10 案例12 静态数据成员的使用。 例如:#includeiostream.h class A { public: static int x; //声明公有的静态数据成员 }; int A::x=10; void main() { coutA::xendl; A::x=20; //通过类名访问静态数据成员 coutA::xendl; } 若静态数据成员是公有的,程序中可以通过类名访问它。 格式如下:
文档评论(0)