const和static成员

常函数

话不多说先上代码:

#include <iostream>

using namespace std;

class Example
{
public:
    int a;
    Example()//声明常对象必须写构造函数
    {
        ;
    }

    void show() const //构造与析构不能是常函数
    {
        //a = 1; 常函数只能使用,不能修改数据成员
        int b = 2;
    } //this指针的形式为const Example *
};

int main()
{
    const Example c1; //常对象
    c1.show();
    return 0;
}

总之,常函数不能修改数据成员,常对象只能调用常函数
如果常函数中有this指针,其类型是const Example *。

static成员使用方法

静态成员只能在类外初始化,无法通过构造函数初始化,但可以在类内对其进行赋值。

#include <iostream>

using namespace std;

class Example
{
public:
    static int b;
    Example()
    {
        b = 3; //可赋值
        cout << b << endl;
    }
};

int Example::b = 1; //类外初始化

int main()
{
    cout << Example::b << endl; //调用方法1

    Example c1; //可以在构造函数中对其赋值

    c1.b = 2;
    cout << c1.b << endl; //调用方法2

    return 0;
}

代码结果如下:
在这里插入图片描述
只有静态常量整型(包括char)变量可以在类内初始化。

对于static函数成员,调用方法与静态变量成员相同,注意事项:

  1. 不能用this指针,因为静态成员所处空间与对象无关。
  2. 静态成员函数只能使用静态成员变量,不能使用普通成员(包括函数)。

关于static成员,类被声明即有自己的空间,与对象创建与否无关。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值