• C++语言笔记系列之十——静态成员


    1.静态成员
    (1)由keywordstatic修饰
    静态变量定义语句在编译阶段就运行,运行过程中不再运行。


    (2)分类:静态数据成员、静态成员函数。
    (3)静态成员时类的全部对象共享的成员,而不是某一个对象的成员。
    2.静态成员的使用
    (1)在定义说明前加上statickeyword。比如:
    static int x;
    (2)静态数据成员必须进行初始化,而且初始化必须在类外完毕。
    (3)静态数据成员的初始化
    数据类型 类名::静态数据成员名 = 值。//注意这里没有static出现
    (4)绝对不能使用对象名来使用静态数据成员,再次强调静态数据成员是属于整个类公有,而非某一个对象。
    对象名.静态成员名  //错误
    (5)正确的使用方式
    类名::静态数据成员
    (6)假设静态数据成员的訪问权限同意,才干够在类外訪问。
    3.静态数据成员举例
    #include <iostream.h>

    class Tc
    {
      int i;
      static int k;
    public:
      Tc()
      {
        i = 0;
        i ++;
        k ++;
      }
      void display()
      {
        cout<<"i = "<<i<<", k = "<<k<<endl;
      }
    };
    int Tc::k = 0;
    int main()
    {
      Tc A, B;
      A.display();
      B.display();
    }
    输出结果:
    i = 1, k = 2
    i = 1, k = 2

    若改为:
    Tc::Tc()
    {
      i = 0;
      i ++;
      Tc::k++;//这个地方的Tc::能够省略
    }
    4.类的静态成员函数
    (1)类的静态成员函数属于类而不是属于对象。
    (2)类的静态成员函数视线中不可直接使用非静态成员,可是能够直接使用静态成员。


    (3)若在静态成员函数中引用非静态成员,必须加对象名(静态成员函数接收參数然后通过參数来调用)。
    5.补充
    Test t1(t2); //调用拷贝构造函数
    Test t1(5);  //调用构造函数
    6.找出下面代码片段中的错误并分析原因。
    class myclass
    {
    public:
        static void fun();
    private:
        static int global;
    };
    void myclass::fun()
    {
        global = 100;
    }
    分析:错误出在将类的静态成员放在函数中初始化,正确的初始化方法是放在类外且在函数外完毕。
    class myclass
    {
    public:
        static void fun(myclass my);
    private:
        int global;
    };
    void myclass::fun()
    {
        cout<<global;
    }
    分析:错误出在两个地方,第一个地方,函数的定义和使用上出现了參数上的不一致;第二个地方类的静态成员函数能够引用静态数据成员,但对于非静态数据成员的引用必须通过对象来完毕。
    补充:
    (1)全局变量中不出现static修饰,static要么出如今类内要么出如今函数内。
    (2)引用对象时。类的对象必须先完毕初始化。

  • 相关阅读:
    ngx-bootstrap使用04 carousel组件
    ngx-bootstrap使用03 Alerts组件、利用Object.assign复制对象
    ngx-bootstrap使用02 Accordion组件的使用
    ngx-bootstrap使用01 安装ngx-bootstrap和bootstrap及其使用、外部样式引入
    SpringBoot11 读取properties文件、发送邮件
    SpringBoot10 整合JSP
    SpringBoot09 自定义servlet、注册自定义的servlet、过滤器、监听器、拦截器、切面、webmvcconfigureradapter过时问题
    红帽系统制作yum本地源
    利用python数据分析panda学习笔记之基本功能
    利用python数据分析panda学习笔记之DataFrame
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7040523.html
Copyright © 2020-2023  润新知