21xrx.com
2024-09-19 10:00:28 Thursday
登录
文章检索 我的文章 写文章
C++类的友元函数入门教程
2023-07-07 19:13:39 深夜i     --     --
C++ 友元函数 入门教程

C++类的友元函数是一种特殊的函数,它具有访问类的私有成员变量和私有成员函数的能力。在本教程中,我们将学习什么是友元函数,如何声明和定义一个友元函数,并了解一些使用友元函数的例子。

什么是友元函数?

友元函数是一种被声明在类外面的函数,它能够访问与其对应的类的私有成员变量和私有成员函数。因此,它可以帮助我们实现一些需要访问私有变量的操作,例如转换数值类型或者打印输出私有成员变量的值。

如何声明和定义一个友元函数?

在声明一个友元函数时,需要在函数的声明前加上一个关键字“friend”,以表明该函数是一个友元函数。同时,需要在类的头文件中将友元函数的原型进行声明。例如:

class MyClass {

 private:

  int _num;

 public:

  friend void friendFunction(MyClass obj);

};

这样,我们就可以在友元函数中访问类的私有属性了。下面是一个简单的例子:

class MyClass {

 private:

  int _num;

 public:

  friend void friendFunction(MyClass obj);

  void setNum(int num)

   _num = num;

};

void friendFunction(MyClass obj)

 cout << obj._num << endl;

在这个例子中,我们定义了一个类MyClass和一个友元函数friendFunction。当我们调用friendFunction时,它将会输出MyClass对象的_num变量的值。

另一个例子是将一个类的对象转换为另一个类的对象:

class MyClass2;

class MyClass1 {

 private:

  int _num1;

 public:

  void setNum1(int num)

   _num1 = num;

  friend MyClass2 convert(MyClass1 obj1);

};

class MyClass2 {

 private:

  int _num2;

 public:

  void setNum2(int num)

   _num2 = num;

};

MyClass2 convert(MyClass1 obj1) {

 MyClass2 obj2;

 obj2.setNum2(obj1._num1);

 return obj2;

}

在这个例子中,我们定义了两个类MyClass1和MyClass2,以及一个友元函数convert。convert函数将一个MyClass1的对象作为参数并将其转换为MyClass2对象,其中MyClass2的_num2变量被赋值为MyClass1的_num1变量的值。友元函数的声明和定义需要出现在被转换的类的定义之前,以便友元函数访问类的私有变量。

总结

C++的友元函数是一种很有用的工具,它可以让我们在某些情况下灵活地操作类的私有变量和方法。当我们想要访问私有变量或者方法来执行一些特定的操作时,友元函数是一个非常好的选择。

  
  

评论区

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