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;
}
相关推荐
豐儀麟阁贵1 分钟前
2.3变量与常量
java·开发语言
什么半岛铁盒1 小时前
C++11 多线程与并发编程
c语言·开发语言·c++
Mr_WangAndy4 小时前
C++设计模式_结构型模式_组合模式Composite(树形模式)
c++·设计模式·组合模式
Kiri霧5 小时前
Linux下的Rust 与 C 的互操作性解析
c语言·开发语言·rust
雪芽蓝域zzs6 小时前
uniapp AES 加密解密
开发语言·uni-app·c#
雨夜的星光6 小时前
Python JSON处理:load/loads/dump/dumps全解析
开发语言·python·json
fen_fen7 小时前
Java打包时,不将本地Jar打包到项目的最终 JAR 中
开发语言·python·pycharm
wjs20249 小时前
SQL AND & OR 操作符详解
开发语言
~光~~9 小时前
【环境配置 】WSL2 +ubuntu20.04 +Qt配置+Kits配置
开发语言·qt·ubuntu
·心猿意码·9 小时前
C++右值语义解析
开发语言·c++