21xrx.com
2024-12-23 01:23:11 Monday
登录
文章检索 我的文章 写文章
C++友元类代码举例
2023-07-04 20:22:28 深夜i     --     --
C++ 友元类 代码举例

C++中的友元类是指在一个类中可以访问另一个类的私有成员和保护成员。通过友元类机制,可以提高程序的灵活性和安全性,更好地实现类之间的交互。下面我们来看一下友元类的代码举例。

首先,我们定义一个叫做Student的类,其中包括两个私有成员变量name和age。


class Student {

private:

  string name;

  int age;

public:

  Student(string name, int age)

    this->name = name;

    this->age = age;

  

  void display()

    cout << "Name: " << name << endl;

    cout << "Age: " << age << endl;

  

};

接着,定义另一个类叫做Classroom,它将Student类作为友元类,可以访问Student类的私有成员变量。


class Student; // 前置声明

class Classroom {

public:  

  void invite(Student& s)

    cout << "Welcome " << s.name << " to join our classroom" << endl;

    s.age = 20; // 可以修改访问私有成员

  

};

class Student {

private:

  string name;

  int age;

  friend class Classroom; // 声明Classroom类为友元类

public:

  Student(string name, int age)

    this->name = name;

    this->age = age;

  

  void display()

    cout << "Name: " << name << endl;

    cout << "Age: " << age << endl;

  

};

在Classroom类中,通过invite函数的参数传递了一个Student对象s,可以直接访问这个对象的私有成员变量。在Student类中,通过friend关键字将Classroom类声明为友元类,使其可以访问Student类的私有成员变量。

最后,我们可以在main函数中创建一个Student对象,然后再创建一个Classroom对象,并调用invite函数将Student对象作为参数传递进去。


int main() {

  Student s("Tom", 18);

  s.display();

  

  Classroom c;

  c.invite(s); // 修改了s的年龄

  

  s.display();

  return 0;

}

输出结果为:


Name: Tom

Age: 18

Welcome Tom to join our classroom

Name: Tom

Age: 20

通过以上代码举例,我们可以看到友元类的使用方法,其实就是在类的声明中通过friend关键字将另一个类声明为友元类,从而可以访问其私有成员变量。它可以在某些情况下方便我们的程序设计,但也需要注意好友类的安全性,避免过度的依赖和出现意想不到的错误。

  
  

评论区

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