电子商务网站建设书个人建什么网站最赚钱
目录
- 标题: 友元函数和友元类
 - 1. 友元函数
 - 2. 友元类
 
标题: 友元函数和友元类
友元函数和友元类是C++中的概念,它们允许某些函数或类访问另一个类的私有成员。这样的访问权限超过了通常的私有和保护访问级别。请注意,友元类的使用应该谨慎,因为它破坏了封装性。过度使用友元可能导致代码的不稳定性和可维护性下降。
1. 友元函数
  特点:
     ①不是类的成员函数,但能够访问类的私有成员。
     ②在类的声明中声明,但在类外部定义。
     ③使用关键字 friend 声明。
 举例:
#include <iostream>
class MyClass 
{private:int privateMember;public:MyClass(int value) : privateMember(value) {} //初始化参数列表// 友元函数的声明,使用friend 声明friend void friendFunction(const MyClass& obj); 
};// 友元函数的定义。传的参数是:类的实例化对象。格式:const 类名&实例化的对象名
//这样的实例化对象可以直接访问类的私有成员
void friendFunction(const MyClass& obj) {std::cout << "Friend Function: " << obj.privateMember << std::endl;
}int main() {MyClass myObject(42);friendFunction(myObject); // 调用友元函数return 0;
} 
2. 友元类
  定义: 友元类是一个有权访问另一个类的私有和保护成员的类。
   特点:
     ①一个类可以将另一个类声明为友元类,以便后者能够访问前者的私有和保护成员。
     ②友元关系是单向的。
举例:
#include <iostream>class FriendClass; // 前向声明class MyClass
{private:int privateMember;	public:MyClass(int value) : privateMember(value) {}  ///初始化参数列表// 友元类声明friend class FriendClass;
};class FriendClass 
{public:// 友元类的成员函数,可以访问 MyClass 的私有成员void printPrivateMember(const MyClass& obj) {std::cout << "FriendClass accessing private member: " << obj.privateMember << std::endl;}
};int main() {MyClass myObject(42);FriendClass friendObj;friendObj.printPrivateMember(myObject); // FriendClass 访问 MyClass 的私有成员return 0;
}