zoukankan      html  css  js  c++  java
  • 【概念】静态成员

    一、概念

    当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。

    静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进行初始化。

     1 #include <iostream>
     2  
     3 using namespace std;
     4  
     5 class Box
     6 {
     7    public:
     8       static int objectCount;
     9       // 构造函数定义
    10       Box(double l=2.0, double b=2.0, double h=2.0)
    11       {
    12          cout <<"Constructor called." << endl;
    13          length = l;
    14          breadth = b;
    15          height = h;
    16          // 每次创建对象时增加 1
    17          objectCount++;
    18       }
    19       double Volume()
    20       {
    21          return length * breadth * height;
    22       }
    23    private:
    24       double length;     // 长度
    25       double breadth;    // 宽度
    26       double height;     // 高度
    27 };
    28  
    29 // 初始化类 Box 的静态成员
    30 int Box::objectCount = 0;
    31  
    32 int main(void)
    33 {
    34    Box Box1(3.3, 1.2, 1.5);    // 声明 box1
    35    Box Box2(8.5, 6.0, 2.0);    // 声明 box2
    36  
    37    // 输出对象的总数
    38    cout << "Total objects: " << Box::objectCount << endl;
    39  
    40    return 0;
    41 }

    当上面的代码被编译和执行时,它会产生下列结果:

    Constructor called.
    Constructor called.
    Total objects: 2

    二、静态成员和非静态成员的区别

    https://www.cnblogs.com/hmdyc/p/6601766.html

    三、初始化

    类中特殊成员变量的初始化问题:

    • 常量变量:必须通过构造函数参数列表进行初始化。
    • 引用变量:必须通过构造函数参数列表进行初始化。
    • 普通静态变量:要在类外通过"::"初始化。
    • 静态整型常量:可以直接在定义的时候初始化。
    • 静态非整型常量:不能直接在定义的时候初始化。要在类外通过"::"初始化。
    /*******相与枕藉乎舟中,不知东方之既白*******/
  • 相关阅读:
    hystrix项目实战
    hystrix实战总结;
    JAVA后端生成Token(令牌),用于校验客户端,防止重复提交
    如何防止表单的重复提交
    hystrix实战
    字符串为空的错误发生
    zuul的学习
    feign无法注入service
    springcloud实战案例苏宁和海信
    RPC与REST的区别
  • 原文地址:https://www.cnblogs.com/Mars-0603/p/13950207.html
Copyright © 2011-2022 走看看