静态成员
原创lihaichuan 博主文章分类:c++ ©著作权
©著作权归作者所有:来自51CTO博客作者lihaichuan的原创作品,请联系作者获取转载授权,否则将追究法律责任
在c++类中声明成员时可以加上static关键字,这样声明的成员就叫做静态成员(包括数据成员和成员函数)。例如:
class test{
public:
test(){}
~test(){}
public:
//静态成员函数
static int getCount(){
return m_nCount;
}
private:
//静态数据成员
static int m_nCount;
};
int test::m_nCount=0;
静态数据成员和普通数据成员区别较大,体现在下面几点:
(1)普通数据成员属于类的一个具体的对象,只有对象被创建了,普通数据成员才会被分配内存。而静态数据成员属于整个类,即使没有任何对象创建,类的静态数据成员变量也存在。
(2)因为类的静态数据成员的存在不依赖与于任何类对象的存在,类的静态数据成员应该在代码中被显示的初始化,一定要在类外进行,例如上例。
(3)外部访问类的静态成员只能通过类名来访问,例如:test::getCount()。
(4)类的静态成员函数无法直接访问普通数据成员(可以通过类的指针等作为参数间接访问),而类的任何成员函数都可以访问类的静态数据成员。
(5)静态成员和类的普通成员一样,也具有public、protected、private3种访问级别,也可以具有返回值、const修饰符等参数。
应用举例:
汽车制造商为统计汽车的产量,可以在在汽车类--car类中增加用于计数的静态数据成员变量,比如在某个类car中声明一个static int number;初始化为0。这个number就能被所有car的实例共用。在car类的构造函数里加上number++,在car类的析构函数里加上number--。那么每生成一个car的实例,number就加一,每销毁一个car的实例(汽车报废),number就减一,这样,number就可以记录在市场上car的实例。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【数据结构】链式家族的成员——循环链表与静态链表
【数据结构】第二章——线性表(8)详细介绍了循环链表与静态链表的相关内容……
数据结构 C语言 循环链表 静态链表 -
静态轮播图java
轮播图效果
html 轮播图 css -
静态成员与非静态成员
静态成员属于类,而非静态成员属于类的实例。 两者的主要区别是static关键字,静态成员使用static关键字声明,放在类型之
软件 class 静态成员 static关键字 静态方法 -
静态类成员
声明为static的类成员或者成员函数便能在类的范围内共同享,我们把这样的成员称做静态成员和静态成员函数。例如:class A{public:
静态类成员 static 静态变量 静态函数 静态数据成员 -
(32.1)静态成员
文章目录1.静态成员2.静态成员函数1.静态成员可以定义类的静态成员, 能够实现同类的
静态数据成员 静态成员函数 静态成员