码迷,mamicode.com
首页 > 编程语言 > 详细

c++ 类的静态成员

时间:2016-05-29 06:19:09      阅读:160      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!