C++_pen_静态与常量

成员

常成员、常对象(C++推荐使用 const 而不用#define,mutable)

const 数据成员只在某个对象生存周期内是常量,而对于整个类而言却是可变的(static除外)

1.常数据成员(构造函数初始化表赋值)

cpp 复制代码
class STU{
public:
    A():x(100){
        
    }
    const int x;
}

2.常成员函数

cpp 复制代码
void func() const;

3.常对象

cpp 复制代码
const STU a;

静态成员(属于类不属于对象)

1.静态成员的声明

cpp 复制代码
static int x;
static const int x = 10;

2.静态数据成员初始化

cpp 复制代码
static int STU::x = 10;//类之外的初始化

3.静态成员函数

cpp 复制代码
static void func();//能访问静态成员
//调用方法
STU::func();

例(常成员、常对象)

cpp 复制代码
#include <stdio.h>

class STU{
public:
    
    STU(int data = 0):b(data){    //默认参数 = 0    b = data;
        printf("STU\n");
    }
    ~STU(){
        printf("STU Bye!!!\n");
    }

    void class_print(void) const{
        printf("b = %d\n", b);
    }

private:
    int a;
    const int b;
};

int main(int argc, char const *argv[])
{
    STU x(10);
    x.class_print();

    STU y(100);
    y.class_print();

    STU z;
    z.class_print();
    return 0;
}

例(静态)

基于类不基于对象

cpp 复制代码
#include <stdio.h>

class STU{
public:
    void func1(){
        printf("func1\n");
    }

    static void func2(){  //无需创建对象也可以调用
        printf("func2\n");
    }

    static int data;
};

int STU::data = 0;//一定类外初始化

int main(int argc, char const *argv[])
{
    STU a;
    a.func1();
    a.func2();

    //STU::func1();//不能调用,因为不依附于对象,无static
    STU::func2();

    printf("data = %d\n", a.data);
    STU::data = 1000;
    printf("data = %d\n", a.data);//静态成员也可以改变
    return 0;
}
相关推荐
古城小栈8 小时前
Rust 网络请求库:reqwest
开发语言·网络·rust
hqwest8 小时前
码上通QT实战12--监控页面04-绘制6个灯珠及开关
开发语言·qt·qpainter·qt事件·stackedwidget
i橡皮擦8 小时前
TheIsle恐龙岛读取游戏基址做插件(C#语言)
开发语言·游戏·c#·恐龙岛·theisle
bing.shao9 小时前
golang 做AI任务执行
开发语言·人工智能·golang
源代码•宸9 小时前
Golang语法进阶(协程池、反射)
开发语言·经验分享·后端·算法·golang·反射·协程池
basketball61610 小时前
python 的对象序列化
开发语言·python
fie888910 小时前
钢结构件制造车间生产调度实例:MATLAB实现(基于遗传算法)
开发语言·matlab·制造
沐知全栈开发11 小时前
PHP 安装指南
开发语言
CSDN_RTKLIB11 小时前
【字符编码】有无BOM的UTF-8
c++
Highcharts.js11 小时前
Highcharts Grid 表格/网格安装 |官方安装文档说明
开发语言·javascript·表格组件·highcharts·官方文档·安装说明·网格组件