zoukankan      html  css  js  c++  java
  • c++:静态数据成员

    一 . 静态数据成员

    类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其它数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态成员还具有以下特点:

    1. 静态数据成员的定义。

    静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义不应该被放在头文件中。静态数据成员初始化时不受private和protected访问限制。

    注意:不要试图在头文件中定义静态数据成员。在大多数情况下,这样做会引起重复定义这样的错误。

    2. 静态数据成员被类的所有对象所共享,包括该类派生类的对象。即派生类对象和基类对象共享基类的静态数据成员。

     1 #include<iostream>
     2 using namespace std;
     3 
     4 class base{
     5     public:
     6         static int _num;
     7 };
     8 
     9 int base::_num = 0;
    10 
    11 class derived : public base
    12 {
    13 };
    14 
    15 int main()
    16 {
    17     base a;
    18     derived b;
    19     a._num++;
    20     cout << "base class static data _num is : " << a._num << endl;
    21     b._num++;
    22     cout << "derived class static data _num is : " << b._num << endl;
    23     return 0;
    [zengtx@cmm03node02 test]$./a.out 
    base class static data _num is : 1
    derived class static data _num is : 2

    由以上程序的执行结果可知,派生类和基类的对象共用一个静态数据成员。

    3. 静态数据成员可以成为成员函数的可选参数,而普通成员函数则不可以。

    4. 静态数据成员的类型可以是所属类的类型,而普通数据成员却不可以。

     1 class base{
     2     public:
     3         static base _object1; // 正确,静态数据成员
     4         base _object2;  // 错误
     5         };
    

       

     参考

    http://www.jb51.net/article/72387.htm

    http://www.jb51.net/article/41775.htm

  • 相关阅读:
    注册表修改 Devenv 默认启动 Visual Studio 版本
    python——高级特性(2)
    python——高级特性
    Hibernate—部分
    Filter—过滤器和拦截器的区别
    POST—常见的4种提交方式
    POST—GET—两种提交方式的区别
    JSON—fastJSON
    协程小示例
    协程基础
  • 原文地址:https://www.cnblogs.com/zengtx/p/6404536.html
Copyright © 2011-2022 走看看