静态成员的作用以及用法的总结
来源:互联网 发布:linux修改root密码命令 编辑:程序博客网 时间:2024/05/22 06:34
一、类的静态数据成员有什么用?
类实现了数据和数据的操作封装在一起,每个类的对象都会分配好内存来保存自己的数据成员,但是往往某个类的众多对象需要一些数据共享,比如定义了Person类,实例化了person1,person2,person3,但是我现在想知道我到底实例化了多少个person对象,怎么办?一个想法是定义一个count数据,这个数据为这些person对象共享,每个person都可以访问该count数据成员,这就是类的静态数据成员的作用:静态成员是解决同一个类的不同对象之间数据和函数共享的问题。
二、怎么定义一个静态数据成员
用关键字 static 来定义,比如 static int count 。
三、实例
看如下代码:
count 就被定义为 静态成员变量,那么 count 就可以为所有的Point 对象所共享,通过对象名.ShowCount 来访问 count:
count 为 静态成员,每个对象的创建和销毁都会影响到count 。
四、静态数据成员需要注意的地方
1. 静态数据成员不属于任何一个对象,它只属于类。
2. 静态数据成员的初始化要在实例化对象之前,否则你要是用 类名::静态数据成员 来访问 (这个可以在没有实例化对象)输出错误结果。
3. 一般静态成员不能在内联函数中访问。
五、 类的静态函数成员
在上面的例子中,每个对象都与一个 ShowCount 的拷贝,可以与 类的静态数据成员一样,设为共享方式。这就需要定义为静态函数成员了。
相关定义如下:
在如下代码中:
需要注意的是,静态成员函数中不可以使用 this 指针,一般是用来访问 静态数据成员的,不做其他用途。(访问非静态成员需要通过参数传递对象名,通过对象名来访问)。
类实现了数据和数据的操作封装在一起,每个类的对象都会分配好内存来保存自己的数据成员,但是往往某个类的众多对象需要一些数据共享,比如定义了Person类,实例化了person1,person2,person3,但是我现在想知道我到底实例化了多少个person对象,怎么办?一个想法是定义一个count数据,这个数据为这些person对象共享,每个person都可以访问该count数据成员,这就是类的静态数据成员的作用:静态成员是解决同一个类的不同对象之间数据和函数共享的问题。
二、怎么定义一个静态数据成员
用关键字 static 来定义,比如 static int count 。
三、实例
看如下代码:
PHP 代码:
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 ;
}
int Point::count = 0 ;
PHP 代码:
Point A(4,5) ;
A.ShowCount() ; // 1
Point B(A) ;
B.ShowCount() // 2
四、静态数据成员需要注意的地方
1. 静态数据成员不属于任何一个对象,它只属于类。
2. 静态数据成员的初始化要在实例化对象之前,否则你要是用 类名::静态数据成员 来访问 (这个可以在没有实例化对象)输出错误结果。
3. 一般静态成员不能在内联函数中访问。
五、 类的静态函数成员
在上面的例子中,每个对象都与一个 ShowCount 的拷贝,可以与 类的静态数据成员一样,设为共享方式。这就需要定义为静态函数成员了。
相关定义如下:
PHP 代码:
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 ; // 注意初始化的方式
PHP 代码:
Point A(4,5) ;
A.ShowCount() ; // 通过对象名引用
Point:: ShowCount() // 通过类名来引用,推荐使用这个方式
- 静态成员的作用以及用法的总结
- static关键字的作用以及静态成员函数与非静态成员函数的区别
- 静态成员函数和static的作用及用法
- static(静态)变量的作用、初始化特点以及类中静态数据成员的特点
- C++静态成员的用法
- 【学习心得】面向对象的程序设计中静态数据成员以及静态成员函数在统计中的作用
- static静态成员函数的作用
- C++中静态成员函数的作用
- Ti:关于类变量(静态成员变量)的作用域,以及生命周期
- 类的静态成员的用法
- 类静态变量的赋值以及调用私有成员变量的用法
- C++ 类的静态成员用法
- PHP中静态成员变量的用法
- 静态类和静态类成员以及非静态类的静态成员
- static成员与非静态成员的区别以及使用方法
- C++类的常成员函数以及静态成员函数
- 静态成员函数的作用与静态数据成员的初始化
- C++类中的静态成员变量和静态成员函数的作用
- how to install old version xcode
- 关于samba无法访问,你可能没有权限使用网络的解决办法
- ASIHTTPRequest-详解
- 完美解读Linux中文件系统的目录结构
- spring源码学习2 未完待续 欢迎评论与指教 开始有点乱 后期整理
- 静态成员的作用以及用法的总结
- 修改ActiveX控件的uuid
- worklight适配器-http
- VC6操作Excel2003
- Keil C开发介绍
- iOS (objective-c) 中的多线程互斥同步问题
- JQuery 在DIV中加载页面
- Eclipse中Tab设置为4个空格
- Android背后的恶意应用,您应该知道的事