C++ STATIC

静态数据成员

静态成员可实现多个对象间的数据共享,不会破坏隐藏的原则
静态成员是类的所有对象共享的成员,而不是某个对象的成员
静态数据成员可以节省内存
静态数据成员在定义或说明时前面加关键字static

初始化的格式
<数据类型><类名>::<静态数据成员名>=<值>

注意事项

1.初始化在类体外进行,而前面不加static
2.初始化时不加该成员的访问权限控制符private,public等
3.初始化时使用作用域运算符来标明它所属类
4.静态数据成员是类的成员,而不是对象的成员
5.静态数据成员是静态存储,静态生存期,必须初始化

引用静态数据成员时,采用如下格式
<类名>::<静态成员名>

示例:

#include <iostream>
using namespace std;

class CStatic
{
public:
    CStatic(int a, int b, int c);
    void GetNumber();
    void GetSum();
private:
    int A, B, C;
    static int Sum;
};

int CStatic::Sum = 0; //静态数据成员类外且必须初始化

CStatic::CStatic(int a, int b, int c)
{
    A = a;
    B = b;
    C = c;
    Sum += A + B + C;
}

void CStatic::GetNumber()
{
    cout << "Number=" << A << "," << B << "," << C << endl;
}

void CStatic::GetSum()
{
    cout << "Sum=" << Sum << endl;
}

void main()
{
    CStatic M(3, 7, 10), N(14, 9, 11);
    M.GetNumber();
    N.GetNumber();

    /*M和N的GetSum()成员函数都会打印54
    说明静态成员变量对2个对象都有效
    也说明静态成员属于类,而不是某个特定的对象*/
    M.GetSum(); //54
    N.GetSum(); //54
    system("pause");
}

静态成员函数

和静态数据成员一样都属于类的静态成员,都不是对象成员
引用不需要用对象名
函数的实现中不能直接引用类中说明的非静态成员
可以引用类中说明的静态成员
若静态成员函数中要引用非静态成员时,可通过对象来引用

静态成员函数使用如下格式
<类名>::<静态成员函数名>(<参数表>);

示例

#include <iostream>
using namespace std;

class M
{
public:
    M(int a)
    {
        A = a;
        B += a;
    }
    static void f1(M m);
private:
    int A;
    static int B;
};

void M::f1(M m)
{
    cout << "A=" << m.A << endl;
    cout << "B=" << B << endl;
}

int M::B = 0;
void main()
{
    M P(5), Q(10);
    M::f1(P); //调用时不用对象名
    M::f1(Q);
    system("pause");
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,910评论 1 32
  • 1.C和C++的区别?C++的特性?面向对象编程的好处? 答:c++在c的基础上增添类,C是一个结构化语言,它的重...
    杰伦哎呦哎呦阅读 13,300评论 0 45
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 8,094评论 0 3
  • 乔任梁的去世,引发了全民对抑郁症的关注,也许我们的心理,比我们想象中要脆弱。 以前做销售的时候,很喜欢跟人打交道...
    眉目间的阳光阅读 1,769评论 0 0
  • 倚棹云霞晚,斜晖染翠峰。 银鱼翻水镜,白鹭点烟汀。 逐水青枫岸,随云碧汉星。 严陵空老去,不与咏秋风。 (新韵 十一庾)
    眉间飞雪阅读 3,728评论 6 9

友情链接更多精彩内容