zoukankan      html  css  js  c++  java
  • C++类中的静态成员和静态成员函数

    静态成员

    C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供 所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间 的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内

    class StringBad
    {
    private:
           static int num_strings;
    }
    
    //初始化
    int StringBad::num_strings = 0;

    注意:

    1,static 成员变量实现了同类对象间信息共享。

    2,static 成员类外存储,求类大小,并不包含在内。
    3,static 成员是命名空间属于类的全局变量,存储在 data 区。
    4,static 成员只能类外初始化。
    5
    ,可以通过类名访问(无对象生成时亦可),也可以通过对象访问。

    静态成员函数

    #include <iostream>
    using namespace std;
    
    class Student
    {
    private:
        double score;
        static int count;
        static double sum;
    public:
        Student(int s)
        {
            score = s;
            count++;
            sum += score;
        }
        
        static void average();
    };
    
    void Student::average()
    {
        cout<<"average scores: "<<sum / count<<endl;
    }
    
    int Student::count = 0;
    double Student::sum = 0;
    
    int main()
    {
        Student students[5] = {Student(1), Student(2), Student(3), Student(4), Student(5)};
    
        Student::average();
    
        return 0;
    }
    View Cod

    1,静态成员函数的意义,不在于信息共享,数据沟通,而在于管理静态数据成员, 完成对静态数据成员的封装

    2,静态成员函数只能访问静态数据成员。 原因:非静态成员函数,在调用时this 针被当作参数传进。而静态成员函数属于类,而不属于对象,没有 this 指针。

  • 相关阅读:
    二、gulp报错The following tasks did not complete
    一、python演示创建文件
    二、小程序的框架周期
    一、更改路由配置
    spring boot 实现文件下载
    sonarqube扫描安卓代码
    jenkis +sonarqube 对后端代码静态扫描,钉钉群通知执行结果(记录)
    SonarQube 平台搭建代码审查平台步骤
    python list的一个面试题
    oracle单机部署
  • 原文地址:https://www.cnblogs.com/xumaomao/p/12912985.html
Copyright © 2011-2022 走看看