zoukankan      html  css  js  c++  java
  • 关于C++类中的静态数据成员

    先上代码:

    #include<iostream>
    using namespace std;

    class A
    {
    public:
    static int a;

    };
    int A::a; //必须在类外再次定义,否则要报错
    int main()
    {
    A a1;
    A a2;
    cout << a1.a << endl;
    a1.a++;
    cout << a1.a << endl;
    a2.a++;
    cout << a2.a << endl;
    cout << a1.a << endl;
    return 0;
    }

    输出 0 - 1 - 2 - 2

    以上说明了类中的静态成员,该类的对象均可以改变,所有对象共享该静态成员数据;

    而且对于类中的静态成员,一定还要再类外定义

    C++中类当中的静态成员实际上可以当做全局变量来使用,特别是在C++多文件工程中,采用一个公有的类,可以将数据public封装,达到全局变量的效果,从而在不同的文件之中可以共享数据成员

    而避免了将全局变放在一个cpp或头文件中所引发的一系列bug

    ****************************分界线*******************************************************************

    先上代码

    #include<iostream>
    using namespace std;

    class A
    {
    public:
    static int a;

    };
    int A::a; //必须在类外再次定义,否则要报错

    class B:public A //继承与A后就不需要再在类外额外的定义该静态成员了
    {

    };

    class C:public A
    {

    };
    int main()
    {
    A aa;
    B b;
    C c;
    cout << b.a << endl;
    c.a++;
    cout << c.a << endl;
    cout << b.a << endl;//检验B对象中继承来的静态a是否增加了,结果输出了1,说明B和C也是共享的父类的静态成员
    cout << aa.a << endl;//父类的a也增加了,说明三个类共享该静态数据成员
    aa.a++;
    //一下说明了任何一个类(父类,子类的自增)都会引起整个a的自增,说明三个类共享a
    cout << aa.a << endl;
    cout << b.a << endl;
    cout << c.a << endl;
    return 0;
    }

    以上程序说明了,对于类中的静态数据成员,不管是父类还是子类的对象都共享同一个

  • 相关阅读:
    【BZOJ1076】[SCOI2008]奖励关 状压DP+期望
    【TYVJ1864】[Poetize I]守卫者的挑战 概率与期望
    【BZOJ1426】收集邮票 期望
    设置SAPgui自动退出功能
    SAP系统联机应用程序帮助
    c++ 类型安全
    生成与重新生成的区别
    2014-02-20
    新公司工作
    落后了
  • 原文地址:https://www.cnblogs.com/Con-Tch-LLYF/p/6591129.html
Copyright © 2011-2022 走看看