• 类之静态成员以及常对象、常成员


    一、静态成员:static修饰,每个类只有一份拷贝,为所有该类的对象所共用。

    1.静态数据成员:

    类内声明、类外初始化。和全局变量一样,在数据段里分配内存。

    eg:

    class A{

      static int co;

    };

    int A::co=0;

    2.静态成员函数:

    1).静态成员函数专门用来存取类的静态成员,不可访问非静态成员,不可调用非静态成员函数,没有this指针。由static在类内声明,可以在类外定义,此时不需要static作为前缀。

    eg:

    class A{

      static int co;

      static int getCo() { return co; }

    }

    2).静态成员函数可以通过类名直接调用,也可以通过对象来调用。格式为:类名::静态成员函数; 对象.静态成员函数。

    二、常对象与常成员:const

    1.常对象:必须在定义时由构造函数初始化,只能调用常成员函数,且只能被常成员函数访问,生存期内不允许被修改。

    定义格式:类型 const 对象名;或者 const 类型 对象名。

    2.常数据成员:必须在构造函数的初始化列表里初始化,生存期内不允许被修改。

    定义格式:类型 const 数据成员名; 或者 const 类型 数据成员名。

    3.常成员函数:不能更新对象的数据成员(但可以访问),不能调用类中非常成员函数,在函数声明以及定义的时候都必须加上const关键字。

    定义格式:返回类型 成员函数名 (参数表) const。

    eg:

    class A{

      int x;

      int day() const;

    }

    int A::day() const

    {

      return x;

    }

    另外,const可用于函数重载。

    eg:void print()与void print() const这两个函数可以重载。

  • 相关阅读:
    [Noi2011]阿狸的打字机
    Bzoj3530: [Sdoi2014]数数
    Bzoj2037: [Sdoi2008]Sue的小球
    Bzoj4869: [Shoi2017]相逢是问候
    Bzoj1899: [Zjoi2004]Lunch 午餐
    Bzoj3884: 上帝与集合的正确用法
    UVA10692:Huge Mods
    Bzoj1009: [HNOI2008]GT考试
    Bzoj1212: [HNOI2004]L语言
    【国家集训队2012】tree(伍一鸣)
  • 原文地址:https://www.cnblogs.com/jiu0821/p/4179309.html
Copyright © 2020-2023  润新知