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;
}
相关推荐
Rabitebla8 分钟前
【C++】string 类:原理、踩坑与对象语义
linux·c语言·数据结构·c++·算法·github·学习方法
邪修king15 分钟前
UE5 零基础入门第四弹:UMG UI 系统入门,从静态界面到逻辑联动
c++·ui·ue5
傻啦嘿哟1 小时前
如何在 Python 中使用 colorama 库来给输出添加颜色
开发语言·python
CN-Dust1 小时前
【C++】输入cin例题专题
java·c++·算法
geovindu2 小时前
go: Visitor Pattern
开发语言·设计模式·golang·访问者模式
宣宣猪的小花园.2 小时前
C语言重难点全解析:内存管理到位运算
c语言·开发语言·单片机
方安乐6 小时前
python之向量、向量和、向量点积
开发语言·python·numpy
小小小米粒8 小时前
Collection单列集合、Map(Key - Value)双列集合,多继承实现。
java·开发语言·windows
智者知已应修善业8 小时前
【51单片机中的打飞机设计】2023-8-25
c++·经验分享·笔记·算法·51单片机
czhc11400756639 小时前
C# 428 线程、异步
开发语言·c#