绵阳市公司网站建设,公司有域名了怎么设计网页,建设网站不显示添加白名单,上海网站推广排名目录 标题#xff1a; 友元函数和友元类1. 友元函数2. 友元类 标题#xff1a; 友元函数和友元类 友元函数和友元类是C中的概念#xff0c;它们允许某些函数或类访问另一个类的私有成员。这样的访问权限超过了通常的私有和保护访问级别。请注意#xff0c;友元类的使用应该… 目录 标题 友元函数和友元类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 iostreamclass 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;
}