15.2静态成员的使用,每个Student对象都有一个name成员。有几个Student对象就有几个name成员。但是,静态数据成员noOfStudent只有一个所有的Student对象共享并访问noofStudent。在Student对象空间中,是没有静态数据成员noOfStudent的。静态数据成员的空间,不会随着对象的产生而分配,也不会随着对象的消失而回收
• 每个Student对象都有一个name成员。 • 有几个Student对象就有几个name成员。 • 但是,静态数据成员noOfStudent只有一个。 • 所有的Student对象共享并访问noOfStudent。 • 在Student对象空间中,是没有静态数据成员 noOfStudent的。 • 静态数据成员的空间,不会随着对象的产生 而分配,也不会随着对象的消失而回收
15.2静态成员的使用静态数据成员的空间分配,不是由类的构造函数完成的静态数据成员的空间回收,也不是由类的析构函数来完成的。静态数据成员在程序一开始运行时就必须存在。因为函数在程序运行中被调用,所以静态数据成员不能在任何函数内分配空间和初始化
• 静态数据成员的空间分配,不是由类的构造 函数完成的。 • 静态数据成员的空间回收,也不是由类的析 构函数来完成的。 • 静态数据成员在程序一开始运行时就必须存 在。 • 因为函数在程序运行中被调用,所以静态数 据成员不能在任何函数内分配空间和初始化
15.2静态成员的使用静态数据成员的空间分配有三个可能的地方。√一是作为类的外部接口的头文件,那里有类声明;√二是类定义的内部实现,那里有类的成员函数定义;三是应用程序的main○函数前的全局数据声明和定义处
• 静态数据成员的空间分配有三个可能的地方。 ✓ 一是作为类的外部接口的头文件,那里有 类声明; ✓ 二是类定义的内部实现,那里有类的成员 函数定义; ✓ 三是应用程序的main()函数前的全局数据 声明和定义处
15.2静态成员的使用静态数据成员要实际地分配空间。因此,不能在类声明中定义(只能声明数据成员)。类声明只声明一个类的“尺寸与规格”,并不进行实际的内存分配,所以,在类声明中写成定义“staticintnoOfStudents = O; ”是错误的
• 静态数据成员要实际地分配空间。 • 因此,不能在类声明中定义(只能声明数据成 员)。 • 类声明只声明一个类的“尺寸与规格” ,并不 进行实际的内存分配。 • 所以,在类声明中写成定义“static int noOfStudents = 0; ” 是错误的
15.2静态成员的使用静态数据成员也不能在头文件中类声明的外部定义因为,那会造成在多个使用该类的源文件中,对其重复定义静态数据成员也不能在main函数之前的全局数据声明处定义因为那样会使每个重用该类的应用程序在包含了声明该类的头文件后,都不得不在应用程序中再定义一下该类的静态成员
• 静态数据成员也不能在头文件中类声明的外 部定义。 • 因为,那会造成在多个使用该类的源文件中, 对其重复定义。 • 静态数据成员也不能在main()函数之前的全 局数据声明处定义。 • 因为那样会使每个重用该类的应用程序在包 含了声明该类的头文件后,都不得不在应用 程序中再定义一下该类的静态成员