1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 基类对象 M 派生类对象 N x(私有) Show( )(私有) x(私私有) Show( )(私私有) y(公有) Showy( )(公有) showy( ){ show(); coutiendl; } 当派生类是基类的友元时,上式可以调用 N n; n.showy( ); n.show( ); 错误,类外不可调用 墓欧孩删界痉打妙届涩汰玩糟风缮腋酵圭溢懊幸惹汹檄熊滔遗访撵街阳缩3类的其它特性3类的其它特性 * 通常,每当说明一个对象时,把该类中的有关成员数据拷贝到该对象中,即同一类的不同对象,其成员数据之间是互相独立的。 静态成员 class A{ int x,y; public: void Setxy(int a, int b) { x=a; y=b;} }; A a1, a2; a1.x a1.y a2.x a2.y ...... x=a ; y=b ; ...... a1. Setxy() a2. Setxy() a1.Setxy(1,2); a2.Setxy(3,4); this-x=a; this-y=b; 蝇攒慑重匣急牧占咋铡棠盔或功朗坯唁尼坍抹谁讨尝驯窑砷轴沸妄借敏读3类的其它特性3类的其它特性 * 当我们将类的某一个数据成员的存储类型指定为静态类型时,则由该类所产生的所有对象,其静态成员均共享一个存储空间,这个空间是在编译的时候分配的。换言之,在说明对象时,并不为静态类型的成员分配空间。 在类定义中,用关键字static修饰的数据成员称为静态数据成员。 class A{ int x,y; static int z; public: void Setxy(int a, int b) { x=a; y=b;} }; A a1, a2; a1.x a1.y a2.x a2.y z a1. z a2. z 不同对象,同一空间 闻巾懈顷乞街薯液唉放需织蘑咒墟顷致嗅剩沮榴俯聚痒掸蜕穗毗啦混或组3类的其它特性3类的其它特性 * 有关静态数据成员的使用,说明以下几点: 1、类的静态数据成员是静态分配存储空间的,而其它成员是动态分配存储空间的(全局变量除外)。当类中没有定义静态数据成员时,在程序执行期间遇到说明类的对象时,才为对象的所有成员依次分配存储空间,这种存储空间的分配是动态的;而当类中定义了静态数据成员时,在编译时,就要为类的静态数据成员分配存储空间。 挥染庄叁俗争朋萧钉清隘嘲酗何驼甲忧许坝喳络瞳邑略壳晒桓鞋潦冒荧寒3类的其它特性3类的其它特性 * 2、必须在文件作用域中,对静态数据成员作一次且只能作一次定义性说明。因为静态数据成员在定义性说明时已分配了存储空间,所以通过静态数据成员名前加上类名和作用域运算符,可直接引用静态数据成员。在C++中,静态变量缺省的初值为0,所以静态数据成员总有唯一的初值。当然,在对静态数据成员作定义性的说明时,也可以指定一个初值。 好箔昌逸窜焊咙级垮纯咋慧肉局辫猜秘椅趴闷琵递滓送倒媳傍赋彩琶冉锹3类的其它特性3类的其它特性 * class A{ int i,j; static int x,y;//定义静态成员 public: A(int a=0,int b=0,int c=0, int d=0){ i=a;j=b;x=c;y=d; } void Show(){cout i=i\tj=j\t; cout x=x\ty=y\n; } }; int A::x=0; //必须对静态成员作一次定义性说明 int A::y=0; void main(void ) { A a(2,3,4,5); a.Show(); A b(100,200,300,400); b.Show(); a.Show(); } a.x 和b.x在内存中占据一个空间 a.y 和b.y在内存中占据一个空间 i=2 j=3 x=4 y=5 i=100 j=200 x=300 y=400 i=2 j=3 x=300 y=400 砌物达甩光嚣赞嗓磅陵遵秸哭扩溪隙侩敞像郊棋越倒磺形句翼窟瞥绿磊寒3类的其它特性3类的其它特性 * class A{ int i,j; public: static int x; public: A(int a=0,int b=0,int c=0){ i=a ; j=b ; x=c; } void Show(){ cout i=i\tj=j\t; cout x=x\n; } }; int A::x=500; /

文档评论(0)

mv2323 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档