小工具知识网

当前位置: 首页 > 行业知识 > 【C++】---static成员(附OJ题)

行业知识

【C++】---static成员(附OJ题)

2026-11-07 23:48:09 来源:互联网转载

一、静态成员变量

1.���念:

声明为static的类成员称为类的静态成员,静态成员分为两种:

(1)static修饰的成员变量:静态成员变量

(2)static修饰的成员函数:静态成员函数


注意:静态成员变量一定要在:类外进行初始化

2.如何计算一个类里面定义了多少个对象?

#includeusing namespace std;class A{public:A(){++countA;}A(const A& n){++countA;}~A(){--countA;}// 静态成员函数 专门访问 静态成员变量static int GetCountA(){return countA;}private:static int countA;// 静态成员变量在类内 只是 声明! //这里的countA存在于静态区(全局域),它属于整个类的所有对象};int A::countA = 0; // (1)定义初始化:静态成员变量必须在类外,而且必须在 类 的后面!!!  // (2)定义的时候,不加static!int main(){cout public:A()//构造函数{++_n;} A(const A& a)//拷贝构造函数{++_n;} //private:static int _n;//n存在于静态区,属于整个类,不属于某个对象}; int A::_n = 0; int main(){A a1;A a2;A(); //这三行访问的都是全局的_n,因此打印结果都一样    cout public:A()//构造函数{++_n;} A(const A& a)//拷贝构造函数{++_n;} //获取静态成员变量的值int getN(){return _n;} private:static int _n;//n存在于静态区,属于整个类,不属于某个对象}; int A::_n = 0; int main(){A a1;A a2; //这两行访问的都是全局的_n,因此打印结果都一样cout public:A(){++countA;}A(const A& n){++countA;}~A(){--countA;}// 静态成员函数 专门访问 静态成员变量static int GetCountA(){return countA;}private:static int countA;// 静态成员变量在类内 只是 声明! //这里的countA存在于静态区(全局域),它属于整个类的所有对象};int A::countA = 0; // (1)定义初始化:静态成员变量必须在类外,而且必须在 类 的后面!!!  // (2)定义的时候,不加static!int main(){cout private:    static int _i;    static int _ret;public:    Sum()// 用构造函数实现_i的自增和_ret的连续求和!    {        _ret+=_i;        ++_i;    }    static int Get_ret() // 静态成员函数 专门获取 静态成员变量_ret    {        return _ret;    }};int Sum::_i=1;int Sum::_ret=0;class Solution {public:    int Sum_Solution(int n)     {        Sum arr[n]; // 调用了n次构造函数        return Sum::Get_ret();    }};    // class不写private 默认就是 私有    // Sum是Solution的内部类,可以访问Solution的私有    class Sum    {    public:        Sum()        {            _ret+=_i;            _i++;        }        // 因为Sum是Solution的友元,调用上面的默认构造函数时,我需要访问_ret和_i时,我可以直接访问solution的私有,        // 所里这也不用,再定义一个静态函数。        //static int GetN()        //{           //    return _ret;        //}    };private:    static int _i;    static int _ret;public:    int Sum_Solution(int n)     {        Sum arr[n];// 数组arr调用n次Sum类的构造函数!        return _ret;    }};int Solution::_i=1;int Solution::_ret=0;int year, month, day;int GetMonDay[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };while (cin  year  month  day){int sum = 0;// 这里的循环 只加了当前的 整月份!(对day还没加上)for (int i = 0; i 

上一篇:轻松下载GrabCar应用指南

下一篇:IIS快速跳转宝塔面板的实用指南