当前位置:编程学习 > C/C++ >>

静态成员的作用以及用法的总结

类的静态成员分为静态数据成员和静态函数成员。先来看看类的静态数据成员:一、类的静态数据成员有什么用?

  类实现了数据和数据的操作封装在一起,每个类的对象都会分配好内存来保存自己的数据成员,但是往往某个类的众多对象需要一些数据共享,比如定义了Person类,实例化了person1,person2,person3,但是我现在想知道我到底实例化了多少个person对象,怎么办?一个想法是定义一个count数据,这个数据为这些person对象共享,每个person都可以访问该count数据成员,这就是类的静态数据成员的作用:静态成员是解决同一个类的不同对象之间数据和函数共享的问题。

  二、怎么定义一个静态数据成员用关键字 static 来定义,比如 static int count .三、实例看如下代码:<span style="font-size: 14px;">class Point { public:Point(int m=0, int n=0 )

  { this->x = m ;this->y = n  ;this->count ++ ;} ~Point() { this->count —— ; } int getX() { return this->x ;} int getY() { return this->y ;} void ShowCount() { cout << "The numbers of count are :" << this->count << endl;} private:int x ;int y ;static int count ;} <br>int Point::count = 0 ;</span> count 就被定义为 静态成员变量,那么 count 就可以为所有的Point 对象所共享,通过对象名。ShowCount 来访问 count:Point A(4,5) ;A.ShowCount() ;  //  1 Point B(A) ;B.ShowCount()   // 2 count 为 静态成员,每个对象的创建和销毁都会影响到count .四、静态数据成员需要注意的地方1. 静态数据成员不属于任何一个对象,它只属于类。

  2. 静态数据成员的初始化要在实例化对象之前,否则你要是用 类名::静态数据成员 来访问 (这个可以在没有实例化对象)输出错误结果。

  3. 一般静态成员不能在内联函数中访问。

  五、 类的静态函数成员在上面的例子中,每个对象都与一个 ShowCount 的拷贝,可以与 类的静态数据成员一样,设为共享方式。这就需要定义为静态函数成员了。

  相关定义如下:class Point { public:Point( int m , int n ) { x = m ; y = n ; count++ ;} Point( Point & p) ;~Point() { count—— ;} static void ShowCount() { cout << count << endl; } private:int x ;int y ;static int count ;} int Point::count = 0 ; // 注意初始化的方式在如下代码中:Point A(4,5) ;A.ShowCount() ; // 通过对象名引用Point:: ShowCount() // 通过类名来引用,推荐使用这个方式需要注意的是,静态成员函数中不可以使用 this 指针,一般是用来访问 静态数据成员的,不做其他用途。(访问非静态成员需要通过参数传递对象名,通过对象名来访问)。

补充:软件开发 , C语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,