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;
}
相关推荐
code_pgf8 小时前
C++11 / C++14 / C++17 / C++20 新特性总结
c++·c++20
魔力女仆8 小时前
分享一个 JS 鼠标跟随贪吃蛇背景库
开发语言·javascript·计算机外设
2401_894915539 小时前
GEO 搜索优化完整源码从零部署:环境配置、集群搭建全流程
开发语言·python·tcp/ip·算法·unity
麻瓜老宋9 小时前
AI开发C语言应用按步走,表达式计算器calc的第二十二步,分号赋值链式修复、TOKEN_ASSIGN
c语言·开发语言·atomcode
颜x小11 小时前
[C#] C++与c#语法对比
开发语言·c++·c#
weixin_4236521312 小时前
C#使用JObject
开发语言·c#
国科安芯12 小时前
FreeRTOS RISC-V 浮点上下文切换移植:在 IAR 工程中完整保存 FPU 寄存器
java·开发语言·单片机·嵌入式硬件·算法·系统架构·risc-v
汉克老师13 小时前
GESP2026年3月认证C++八级( 第三部分编程题(2、子图最短路)精讲
c++·最短路·floyd·gesp8级
霸道流氓气质13 小时前
Java中集成Smile 技术教程:从入门到工程实践
java·开发语言
BerrySen17814 小时前
迈向 Next-Gen Java:企业级高并发架构演进与大模型 Agent 落地深度实战
java·开发语言·架构