c++ 类的静态成员
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ 类的静态成员相关的知识,希望对你有一定的参考价值。
1,静态数据成员
在c++中,类的静态数据成员由 static 标识,E.G:
class MyClass
{
private:
static int Num ;
double a;
long b;
......
}
Num被声明为Static的,静态数据成员有一些特点:无论创建多少个对象,都只有一个静态数据化成员的副本。也就是说,静态数据成员是属于类的,而不是每个对象都有一个静态数据成员,类的所有对象共享一个静态数据成员。比如说,我们创建两个MyClass对象,有2个a和b成员,但是只有一个共享的NUm,这个Num存储在额外的空间,而不是对象的组成部分。
静态数据成员的初始化:
(1),初始化的位置
我们应该方法定义文件中初始化,而不是在类声明文件中(头文件)。这是因为类声明位于头为念中,而头文件可能被包含在多个文件中,如果在头文件中出事话,将会出现多个初始化语句,编译器将会报错。
(2)初始化的方法。
指出数据类型,并使用了限定名称(类名+作用域解析运算符),但是不再需要关键字Static
如:int MyClass::Num = 0;
注意事项:
1,不能在类声明中初始化静态数据成员,因为类声明只是描述了怎么分配内存,但是并不分配内存,也就是说,类声明只是声明了一种数据类型(用户自定义类型),就像int一样,我们可以像使用int等基本内置类型一样来使用类这种类型来定义变量。简单的说,MyClass就像int等,只有在定义变量的时候才分配内存。
2,不能使用构造函数来初始化静态数据成员,因为它是属于类的,而不是属于类的某个特定对象。
3,存在类外情况,静态数据成员是const或枚举类型的,可以在类声明中初始化。
总的来说,静态数据成员在类的对象间共享,是属于类的,而不是属于类的对象。
以上是关于c++ 类的静态成员的主要内容,如果未能解决你的问题,请参考以下文章