首页 > 编程语言 > 详细

c++ 类的静态成员

时间:2016-05-29 06:17:38      阅读:189      评论:0      收藏:0      [点我收藏+]

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++ 类的静态成员

原文:http://www.cnblogs.com/foryou24/p/5538758.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!