C++ 访问数据成员



在 C++ 中访问类的数据成员

访问数据成员仅取决于该数据成员的访问控制权限,如果它是public的,那么可以使用直接成员访问 (.) 运算符轻松地访问数据成员。

如果数据成员被定义为private或protected,那么我们不能直接访问数据变量。然后我们必须创建特殊的public 成员函数 来访问、使用或初始化private和protected数据成员,这些成员函数也称为 AccessorsMutator 方法或 getter(获取)setter(设置) 函数。



访问公共数据成员

下面这个示例,向你展示如何使用点 (.) 运算符和类的实例来初始化和使用public数据成员。

class Student
{
    public:
    int rollno;
    string name;
};

int main()
{
    Student A;
    Student B;
    
    // 为对象A成员赋值
    A.rollno=1;
    A.name="Adam";
    
    // 为对象B成员赋值
    B.rollno=2;
    B.name="Bella";

    cout <<"A的Name和Rollno分别为: "<< A.name << "-" << A.rollno;
    cout <<"B的Name和Rollno分别为:"<< B.name << "-" << B.rollno;
}

以上实例输出结果:

A的Name和Rollno分别为: Adam-1
B的Name和Rollno分别为: Bella-2


访问私有数据成员

要访问、使用和初始化private数据成员,你需要创建 getter(获取) 和 setter(设置) 函数,以获取和设置数据成员的值。

setter 函数将通过为设置函数传递参数给私有数据成员赋值,getter 函数将返回要使用的私有数据成员的值, getter 和 setter 函数都必须定义为 public。

示例

class Student
{
private:    // 私有数据
    int rollno;

public:
    // 公有函数来获取值 - getter
    int getRollno()
    {
        return rollno;
    }
    // 公有函数来设置值 - setter
    void setRollno(int i)
    {
        rollno=i;
    }
};

int main()
{
    Student A;
    A.rollono=1;  // 编译报错
    cout<< A.rollno; //编译报错

    A.setRollno(1);  //Rollno赋值为1
    cout<< A.getRollno(); //输出 1
}

这就是我们使用 getter 和 setter 方法访问和使用任何类的私有数据成员的方式,后面的章节中我们将更详细地学习这些。



访问受保护的数据成员

protected数据成员,可以在当前类的子类中使用点(.)操作符直接访问,对于非子类,我们必须按照与访问私有数据成员相同的方法。