c++类的成员变量详解

C++ 类的成员变量是类的一部分,用于存储类的状态或属性。成员变量可以是不同的数据类型,并且可以具有不同的访问权限。C++ 提供了多种类型的成员变量,包括普通成员变量、静态成员变量、常量成员变量、可变成员变量(mutable)和引用成员变量。下面详细介绍这些成员变量及其用法。

  1. 普通成员变量
    普通成员变量是最常见的成员变量类型,用于存储对象的属性。每个对象都有自己独立的一份普通成员变量。

示例

#include <iostream>

class MyClass {
public:
    int value;

    MyClass(int val) : value(val) {}
};

int main() {
    MyClass obj1(10);
    MyClass obj2(20);

    std::cout << "obj1.value = " << obj1.value << std::endl;
    std::cout << "obj2.value = " << obj2.value << std::endl;

    return 0;
}

  1. 静态成员变量
    静态成员变量属于类而不是类的对象。所有对象共享同一个静态成员变量。静态成员变量在类的外部初始化。

示例

#include <iostream>

class MyClass {
public:
    static int staticValue;

    MyClass() {}
};

// 静态成员变量初始化
int MyClass::staticValue = 0;

int main() {
    MyClass obj1;
    MyClass obj2;

    MyClass::staticValue = 100;

    std::cout << "obj1.staticValue = " << obj1.staticValue << std::endl;
    std::cout << "obj2.staticValue = " << obj2.staticValue << std::endl;

    return 0;
}

  1. 常量成员变量
    常量成员变量在对象的生命周期内不能被修改。常量成员变量必须在初始化列表中进行初始化。

示例

#include <iostream>

class MyClass {
public:
    const int value;

    MyClass(int val) : value(val) {}
};

int main() {
    MyClass obj(10);

    std::cout << "obj.value = " << obj.value << std::endl;

    return 0;
}

  1. 可变成员变量(mutable)
    可变成员变量允许在常量成员函数中被修改。mutable 关键字用于声明可变成员变量。

示例

#include <iostream>

class MyClass {
public:
    mutable int mutableValue;

    MyClass(int val) : mutableValue(val) {}

    void modifyValue() const {
        mutableValue = 100; // 在const成员函数中修改可变成员变量
    }
};

int main() {
    MyClass obj(10);
    std::cout << "Before: " << obj.mutableValue << std::endl;

    obj.modifyValue();

    std::cout << "After: " << obj.mutableValue << std::endl;

    return 0;
}

  1. 引用成员变量
    引用成员变量是指向其他变量的引用。引用成员变量必须在初始化列表中初始化,并且一旦绑定后不能再绑定到其他变量。

示例

#include <iostream>

class MyClass {
public:
    int& refValue;

    MyClass(int& val) : refValue(val) {}
};

int main() {
    int x = 10;
    MyClass obj(x);

    std::cout << "obj.refValue = " << obj.refValue << std::endl;

    x = 20;
    std::cout << "After modifying x: obj.refValue = " << obj.refValue << std::endl;

    return 0;
}

  1. 私有成员变量
    私有成员变量只能在类的内部访问,不能在类的外部直接访问。通常通过公共成员函数访问私有成员变量。

示例

#include <iostream>

class MyClass {
private:
    int privateValue;

public:
    MyClass(int val) : privateValue(val) {}

    int getValue() const {
        return privateValue;
    }

    void setValue(int val) {
        privateValue = val;
    }
};

int main() {
    MyClass obj(10);

    std::cout << "Private value: " << obj.getValue() << std::endl;

    obj.setValue(20);
    std::cout << "Updated private value: " << obj.getValue() << std::endl;

    return 0;
}

  1. 保护成员变量
    保护成员变量在类的外部不可访问,但可以在派生类中访问。

示例

#include <iostream>

class Base {
protected:
    int protectedValue;

public:
    Base(int val) : protectedValue(val) {}
};

class Derived : public Base {
public:
    Derived(int val) : Base(val) {}

    void showValue() const {
        std::cout << "Protected value: " << protectedValue << std::endl;
    }
};

int main() {
    Derived obj(10);
    obj.showValue();

    return 0;
}

总结
C++ 类的成员变量种类多样,可以根据需要选择合适的类型来存储和管理数据:

普通成员变量:每个对象有自己独立的成员变量。
静态成员变量:属于类,所有对象共享同一个变量。
常量成员变量:在对象生命周期内不能修改。
可变成员变量:允许在常量成员函数中修改。
引用成员变量:指向其他变量的引用,必须在初始化列表中初始化。
私有成员变量:只能在类内部访问,通常通过公共成员函数访问。
保护成员变量:在类外部不可访问,但在派生类中可以访问。
理解和使用这些成员变量类型,可以帮助开发者更好地设计和实现类及其行为,确保数据的封装和安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值