15.2静态成员的使用例如:重用Student类,在应用程序中需再定义静态成员file1.cpp//Student类的内部实现部分#include“" student.h"/类的成员函数定义(没有包括静态数据成员定义)file2.cpp//应用程序重用了Student类#include" student.h"#include<iostream>using namespace std;int Student ::noOfStudents = O ;不便于重用
例如:重用Student类,在应用程序中需再定义静态成员 file1.cpp //Student类的内部实现部分 #include “ student.h " //类的成员函数定义(没有包括静态数据成员定义) file2.cpp //应用程序重用了Student类 #include “ student.h " #include <iostream> using namespace std; int Student :: noOfStudents = 0 ; //不便于重用
15.2静态成员的使用void fn (){Student s1;Student s2;cout << Student :: number() << endl ;11voidmain (){fn ();cout << Student :: number() << endl ;1
void fn ( ) { Student s1 ; Student s2 ; cout << Student :: number( ) << endl ; } void main ( ) { fn ( ) ; cout << Student :: number( ) << endl ; }
15.2静态成员的使用静态数据成员是类的一部分。静态数据成员的定义是类定义的一部分,将其放在类的内部实现部分中定义是再合适不过了。,定义时,要用类名引导重用该类时,简单地包含其头文件便可
• 静态数据成员是类的一部分。 • 静态数据成员的定义是类定义的一部分。 • 将其放在类的内部实现部分中定义是再合适 不过了。 • 定义时,要用类名引导。 • 重用该类时,简单地包含其头文件便可
15.2静态成员的使用ch15_2.cpp例如:将ch15_1.cpp改成了多文件程序实现结构student.h#ifndef STUDENT#defineSTUDENTclassStudent{staticint noOfStudents;char name[40] ;public :Student(char*pName="noname")~Student();/静态成员函数static int number();#endif
例如:将ch15_1.cpp改成了多文件程序实现结构 student.h #ifndef STUDENT #define STUDENT class Student { static int noOfStudents ; char name[40] ; public: Student(char * pName = "no name" ) ; ~Student( ) ; static int number( ) ; //静态成员函数 } ; #endif
student.cpp#include"student.h"#include<iostream>#include<string>usingnamespace std;intStudent::noOfStudents=O;在此分配空间和初始化Student::Student(char*pName)ycout<<"create one student)n";strncpy(name, pName,40);name[39]="\0′;noOfStudents++;//静态成员:创建对象伴随学生人数增1cout<<noOfStudents<<endl;人~Student::Student()1cout<<"destructonestudentln";noofStudents--;/析构对象伴随学生人数减1cout<<noOfStudents<<endl1//静态成员函数intStudent::number()1returnnoOfStudents;
student.cpp #include "student.h" #include<iostream> #include<string> using namespace std ; int Student::noOfStudents = 0 ; //在此分配空间和初始化 Student::Student(char * pName ) { cout<<"create one student\n"; strncpy(name, pName,40); name[39]='\0’; noOfStudents++; //静态成员:创建对象伴随学生人数增1 cout<<noOfStudents<<endl; } ~Student::Student( ) { cout<<"destruct one student\n"; noOfStudents-; //析构对象伴随学生人数减1 cout<<noOfStudents<<endl ; } int Student::number( ){ //静态成员函数 return noOfStudents ; }