zoukankan      html  css  js  c++  java
  • C++ 静态成员变量和静态成员函数

        静态成员变量和静态数据成员并不属于某一个类对象,而是整个类,为所有对象共有,下面介绍 静态成员变量和静态数据成员的一些特征:

        1.静态成员变量的内存分配于全局区,不同于普通的成员变量,当用sizeof()计算类的大小的时候,静态成员变量是不算在里面的,有如下代码:

        class A
        {
             static int a;
             static int b;
         };
         int _tmain(int argc, _TCHAR* argv[])
        {
             printf("%d\n", sizeof(A));
             return 0;
        }

        结果如下:

        

        2.当类的成员变量为const static类型的时候,可以在类体中定义,也可以在类体外定义,代码如下:

        class A
        {
         public:
             static int a;
             static int b;
             const static int i = 1;
             const static char c;
        };
        const char A::c = 'b';

        3.类的静态成员的访问方式:

      可以通过作用域操作符,类的对象,引用,指向类对象的指针访问,代码如下:

      class A
      {
      public:
      static void print()
      {
        printf("hello world!\n");
      }
      };
      int _tmain(int argc, _TCHAR* argv[])
      {
        A a;
        a.print();
        A *pa;
        pa->print();
        A::print();
        return 0;
      }

      4. 因为静态成员不是任何对象的组成部分,所以静态成员函数不能被神明为const,const就是承诺不会修改函数所属对象。静态成员函数也不能被神明为虚函数。

      5.静态成员数据必须在类外初始化,类的成员函数只能对其进行赋值,而不能初始化:

    class A
    {
    public:
      A(int x)
      {
        a = x;
      }
      static int a;
      void print(){printf("%d\n", a);}
    };

    int A::a = 1;
    int _tmain(int argc, _TCHAR* argv[])
    {
      A a(2);
      a.print();
      return 0;
    }

    如果把int A::a = 1;删除的话将会出现编译错误。

  • 相关阅读:
    swift3.0 coreData的使用-日记本demo
    Objective-C plist文件与KVC 的使用
    swift3.0 CoreGraphics绘图-实现画板
    Objective-C 使用核心动画CAAnimation实现动画
    Objectiv-C UIKit基础 NSLayoutConstraint的使用(VFL实现)
    Objectiv-c
    C语言基础
    C语言基础
    swift 3.0 基础练习 面向对象 类的扩展
    myIsEqualToString
  • 原文地址:https://www.cnblogs.com/lzmfywz/p/2983540.html
Copyright © 2011-2022 走看看