21xrx.com
2024-12-26 16:49:25 Thursday
登录
文章检索 我的文章 写文章
C++如何访问私有成员?
2023-06-28 14:12:44 深夜i     --     --
C++ 私有成员 访问

在C++中,类的数据成员可以分为公有成员和私有成员。公有成员能够被外部类函数所访问和使用,而私有成员只能在类内被访问和使用。但是,有时候我们需要在类外访问类的私有成员,这时我们可以使用访问器和友元函数。

访问器是一种特殊的类成员函数,它可以访问和修改私有成员变量,同时还可以进行一定的逻辑判断或变化。访问器有两种,分别是“get”方法和“set”方法。其中,get方法用于得到类的私有成员变量的值,而set方法可以对类的私有成员变量重新赋值。

例如,下面的代码演示了如何使用访问器访问私有成员变量:


#include <iostream>

using namespace std;

class Student{

private:

  int age;

public:

  void setAge(int num)

    age = num;

  

  int getAge()

    return age;

  

};

int main(){

  Student stu;

  stu.setAge(20);

  cout<<"Student age is "<<stu.getAge()<<endl;

  return 0;

}

在上面的代码中,私有成员变量“age”被声明为私有的,因此不能直接访问。但是,通过访问器setAge()和getAge(),我们就可以在类外对私有成员变量进行操作和获取。

除了访问器,友元函数也可以用于访问类的私有成员。友元函数是指在类中声明的非成员函数,它可以访问类的所有成员,包括私有成员。但是,友元函数不属于类的成员函数,因此不能直接访问类的成员变量和成员函数。

友元函数的使用需要在类的声明中使用“friend”关键字进行声明。例如,下面的代码演示了如何使用友元函数访问私有成员变量:


#include <iostream>

using namespace std;

class Student{

private:

  int age;

public:

  Student(int num)

    age = num;

  

  friend void printAge(Student s);

};

void printAge(Student s)

  cout<<"Student age is "<<s.age<<endl;

int main(){

  Student stu(20);

  printAge(stu);

  return 0;

}

在上面的代码中,我们定义了一个printAge()的友元函数,它可以访问类的私有成员变量“age”。在main函数中,我们创建了一个Student类的对象,然后通过printAge()函数输出了该对象的年龄信息。

需要注意的是,友元函数虽然具有访问类的私有成员的能力,但是由于其不属于类的成员函数,因此会影响程序的封装性和安全性。因此,在使用友元函数时一定要慎重考虑。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复