c++静态成员与常成员

静态成员与常成员

静态成员


  1. 在定义类中可使用static关键字定义静态成员,静态成员不属于类变量,属于类本身故静态成员的数据空间固定,且在定义时就会为其分配,在使用类声明任意数量的类变量时,不会为静态成员新分配空间,变量释放时也不会释放静态成员,任意数量变量使用同一静态成员,任一类变量修改其静态成员的值本质上都是在修改属于类本身静态成员的值

    • 定义格式:在类中任何成员的声明前面加上static关键字可定义为静态成员,且仅且仅可在类外给出定义和初始化赋值

    • 静态成员也可定义为公有和私有,公有可外部访问,私有仅类内部访问

    • 由于静态成员属于类而不属于类对象,故可在类外直接通过 类名::静态成员名 的方式访问公有静态成员(可理解为其不依赖与类对象,仅依赖于类本身),即使一个类对象也没有声明,依然可以访问其静态成员,同时也可通过声明的空的类指针直接访问

  2. 静态成员函数:不依赖于类对象,也就没有this指针,且不可定义为const(静态数据成员可以同时定义为const),静态成员函数的定义可以在类内和内外,但static关键字只可在类内声明时使用,静态成员函数只能访问静态成员

#include <iostream>
class MyClass {
private:
    static int count;
public:
    static int get_count() {
        return MyClass::count;
    }
};
int MyClass::count = 5;
int main(void) {
    std::cout << MyClass::get_count();
    return 0;
}

常成员和常对象


  1. 用const关键字限定的成员或对象,保证其值或属性在定义之后不会被修改,普通成员在其变量名前加const声明常成员,普通成员函数在其形参括号后加上const声明常成员函数,普通对象在其变量名前加上const声明常对象
  2. 常成员函数可以在类中声明类外定义,但不同于static,在声明和定义时都需要使用const说明,也可以直接在类中定义,非类的成员函数不能定义为常函数
  3. 常成员可以被常成员函数和普通成员函数调用,但其值不可被修改,常成员函数也可以调用常成员和普通成员,但均不可以对它们的值进行修改
  4. 常成员函数用于保证不会对其类的成员作修改,而常形参的函数用于保证不会通过形参对原值作修改
  5. 常对象是在使用类声明变量时声明的对象,其声明时const关键字放在 类名 前后均可,常对象只能调用类中的常成员函数(构造函数和析构函数可正常调用)和静态成员函数
  6. 一般下面两种情况声明为常对象:1)函数的形参;2)函数的返回值
  7. const和非const的同名函数可以用于函数重载的区分,当普通对象调用其时自动选择普通函数,当常对象调用时自动选择常成员函数
  8. 构造函数(包括拷贝构造函数)和析构函数不可定义为常成员函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值