zoukankan      html  css  js  c++  java
  • c++ static总结

    1. 修饰全局变量

    static修饰全局变量时,表明一个全局变量只对定义在同一文件中的函数可见

    2. 修饰局部变量

    表明该变量的值不会因为函数终止而丢失

    3. 修饰函数

    表明该函数只在同一文件中调用

    4. 修饰类中的成员变量

    static 修饰类中的成员变量时,表明对该类所有对象这个数据成员都只有一个实例,即该实例归所有对象共有

    类的静态变量必须在类外被初始化,类的静态变量可以直接通过类名调用,也可以通过实例化的对象名调用

    #include <iostream>
    
    using namespace std;
    
    class A {
    public:
        static int x;
    };
    
    int A::x = 10; // 不初始化会报错
    
    int main() {
        A a;
        cout << A::x << ", " << a.x << endl;
        A::x = 20;
        cout << A::x << ", " << a.x << endl;
    }

    类中的静态成员为prevate时,只能通过类中的公有方法调用:

    #include <iostream>
    
    using namespace std;
    
    class A {
    private:
        static int x;
    public:
        void print() {
            cout << x << endl;
        }
    };
    
    int A::x = 10; // 不初始化会报错
    
    int main() {
        A a;
        // A::x = 20; 报错
        a.print();
    }

    5. 修饰类中的成员函数

    如果把函数成员声明为静态的,就可以把函数与类的任何特定对象独立开来。静态成员函数即使在类对象不存在的情况下也能被调用,静态函数只要使用类名加范围解析运算符 :: 就可以访问。

    静态成员函数只能访问静态成员数据、其他静态成员函数和类外部的其他函数。

    静态成员函数有一个类范围,他们不能访问类的 this 指针

    静态成员函数与普通成员函数的区别:

    • 静态成员函数没有 this 指针,只能访问静态成员(包括静态成员变量和静态成员函数)。
    • 普通成员函数有 this 指针,可以访问类中的任意成员;而静态成员函数没有 this 指针。

    静态变量和静态函数的创建时期和内存分配

    静态变量和静态函数在程序启动时就被创建了,分配在静态存储区/全局存储区中

  • 相关阅读:
    理清可导、可微、连续...的概念
    f(sinx)到底是啥
    高数基础知识整理7.渐近线与曲率
    高数基础知识整理6.函数单调性与凹凸性
    高数基础知识整理4.导数与微分
    数组、稀疏矩阵、广义表综合应用
    数据库(外键及其约束理解)
    js中按钮去触发定时器,那么多次点击这个定时器会越来越快,解决方法
    JavaScript splice() 方法和JavaScript split() 方法
    javascript中加号(+)操作符的作用
  • 原文地址:https://www.cnblogs.com/xumaomao/p/15091783.html
Copyright © 2011-2022 走看看