- 2
- 0
- 约5.18千字
- 约 32页
- 2019-07-20 发布于四川
- 举报
* 第11章 静态成员与友元 通常,每当说明一个对象时,把该类中的有关成员数据拷贝到该对象中,即同一类的不同对象,其成员数据之间是互相独立的。 静态成员 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 ...... y=b ; x=a ; ...... a1. Setxy() a2. Setxy() a1.Setxy(1,2); a2.Setxy(3,4); this-x=a; this-y=b; 当我们将类的某一个数据成员的存储类型指定为静态类型时,则由该类所产生的所有对象,其静态成员均共享一个存储空间,这个空间是在编译的时候分配的。换言之,在说明对象时,并不为静态类型的成员分配空间。 在类定义中,用关键字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 不同对象,同一空间 有关静态数据成员的使用,说明以下几点: 1、类的静态数据成员是静态分配存储空间的,而其它成员是动态分配存储空间的(全局变量除外)。当类中没有定义静态数据成员时,在程序执行期间遇到说明类的对象时,才为对象的所有成员依次分配存储空间,这种存储空间的分配是动态的;而当类中定义了静态数据成员时,在编译时,就要为类的静态数据成员分配存储空间。 2、必须在文件作用域中,对静态数据成员作一次且只能作一次定义性说明。因为静态数据成员在定义性说明时已分配了存储空间,所以通过静态数据成员名前加上类名和作用域运算符,可直接引用静态数据成员。在C++中,静态变量缺省的初值为0,所以静态数据成员总有唯一的初值。当然,在对静态数据成员作定义性的说明时,也可以指定一个初值。 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 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; //int A::x void main(void ) { A a(20,40,10),b(30,50,100); a.Show (); b.Show (); cout “A::x=”A::x‘\n’; //可以直接用类名引用 } 在类外重新定义 3、静态数据成员具有全局变量和局部变量的一些特性。静态数据成员与全局变量一样都是静态分配存储空间的,但全局变量在程序中的任何位置都可以访问它,而静态数据成员受到访问权限的约束。必须是public权限时,才可能在类外进行访问。 4、为了保持静态数据成员取值的一致性,通常在构造函数中不给静态数据成员置初值,而是在对静态数据成员的定义性说明时指定初值。 class A{ int i; static int count; public: A(int a=0) { i=a; count++; cout Number of Objects=count\n; } ~A() { count--; cout Number of
您可能关注的文档
最近下载
- ZXM10 EISU(V1.0)增强智能型采集单元用户手册.pdf VIP
- 统编版(2024)一年级语文下册11浪花课件.pptx VIP
- 语文-江西省吉安市2025届高三上学期1月期末教学质量检测试题和答案.docx VIP
- 物理-江西省吉安市2025届高三上学期1月期末教学质量检测试题和答案.docx VIP
- 英语-江西省吉安市2025届高三上学期1月期末教学质量检测试题和答案.docx VIP
- 2022年度(江苏)高考数学真题(带答案).pdf VIP
- 浙江省温州市2025年七年级上学期期末数学试卷附答案.pdf VIP
- 大气降水的同位素水文学-第3讲-2011版本.pdf VIP
- 02J331_地沟及盖板图集.docx
- 政府机关物业管理服务保洁服务工作计划及操作规程服务方案.docx VIP
原创力文档

文档评论(0)