友元函数可访问类的私有成员,示例中printWidth被声明为Box类的友元,能直接输出其私有成员width。

在C++中,friend关键字用于声明友元函数或友元类,使其能够访问当前类的私有(private)和保护(protected)成员。这种机制打破了封装的限制,但使用得当可以提升类之间的协作效率。
一个非成员函数如果被声明为某个类的友元,就可以直接访问该类的私有成员。
示例:
class Box {
private:
double width;
public:
Box(double w) : width(w) {}
// 声明友元函数
friend void printWidth(Box box);
};
// 友元函数定义
void printWidth(Box box) {
// 直接访问私有成员
std::cout << "Width is: " << box.width << std::endl;
}
注意:友元函数不是类的成员函数,但它可以像成员一样访问私有数据。
如果一个类被声明为另一个类的友元,则它可以访问后者的所有私有和保护成员。
立即学习“C++免费学习笔记(深入)”;
示例:
class Storage {
private:
int secretData;
public:
Storage(int data) : secretData(data) {}
// 声明友元类
friend class Accessor;
};
class Accessor {
public:
void showData(Storage& s) {
std::cout << "Secret data: " << s.secretData << std::endl;
}
};
在这个例子中,Accessor 类可以自由访问 Storage 的私有成员 secretData。
友元机制虽然灵活,但需谨慎使用,避免破坏封装性。
基本上就这些。合理使用friend能解决特定场景下的访问需求,比如运算符重载、工厂模式中的构造辅助等,关键在于控制粒度,保持代码清晰和安全。
以上就是C++怎么使用friend声明友元_C++类间访问权限与友元关系讲解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号