C++友元函数和友元类
C++友元函数和友元类
友元是C++的一种特殊机制,用于打破类的封装性,使某些函数或类可以直接访问另一个类的私有(private
)和受保护(protected
)成员。友元关系由类显式声明,且单向且非继承。
1. 友元函数
友元函数是被一个类声明为friend
的普通函数。友元函数不属于类的成员函数,但可以直接访问该类的私有和受保护成员。
特点
- 友元函数不是类的成员函数,因此不能通过对象调用,而是通过普通的函数调用。
- 友元函数定义可以在类外部,也可以在类的内部定义。
- 友元关系是单向的:声明一个函数为友元函数,该函数可以访问类的私有成员,但反过来不行。
示例
#include <iostream>
class MyClass {
private:int privateVar;
public:MyClass(int val) : privateVar(val) {}// 声明友元函数friend void printPrivateVar(const MyClass& obj);
};// 友元函数的定义
void printPrivateVar(const MyClass& obj) {std::cout << "Private Variable: " << obj.privateVar << std::endl;
}int main() {MyClass obj(42);printPrivateVar(obj); // 调用友元函数return 0;
}
输出:
Private Variable: 42
友元函数的使用场景
- 实现全局函数访问类的