博客
关于我
C++ 友元
阅读量:714 次
发布时间:2019-03-21

本文共 1169 字,大约阅读时间需要 3 分钟。

在软件工程中,友元(friend)是允许外部代码访问一个类或函数非公有的成员的机制。通过声明友元,开发者可以突破封装性,实现灵活的代码访问控制。

友元的作用

友元机制为函数和类提供了访问类外部成员的途径,使得代码可以在需要时实现更强大的交互能力。

友元的限制

友元declaring类的封装性一定程度上被破坏,虽然这种限制可以灵活满足需求,但也带来代码维护的复杂性。

友元函数示例

class Test {
private:
int m_data;
public:
Test(int data): m_data(data) {}
~Test() {}
friend void show(Test& t);
};
void show(Test& t) {
std::cout << "t.m_data = " << t.m_data << std::endl;
return;
}
int main() {
Test t(123);
show(t);
return 0;
}

友元类示例

class Test {
private:
int m_data;
public:
Test(int data): m_data(data) {}
~Test() {}
friend class Brother;
};
class Brother {
public:
Brother() {}
~Brother() {}
friend class Son;
void show(Test& t) {
std::cout << "t.m_data = " << t.m_data << std::endl;
return;
}
};
class Son: public Father {
public:
Son() {}
~Son() {}
void show(Test& t) {
std::cout << "Son data = " << t.m_data << std::endl;
return;
}
};
int main() {
Test t(123);
Brother b;
b.show(t);
return 0;
}

友元类的关系

友元类具有以下性质:

  • 不能继承:父亲的朋友不是你的朋友。
  • 不能传递:朋友的朋友不是你的朋友。
  • 不能反转:你的友元不是你的朋友的友元。

友元关系具有不可逆性和不可传递性,这部层次性的规则设计确保了类的继承关系不会因友元关系而产生混乱。

转载地址:http://olbrz.baihongyu.com/

你可能感兴趣的文章
MongoDB学习笔记(8)--索引及优化索引
查看>>
mongodb定时备份数据库
查看>>
mppt算法详解-ChatGPT4o作答
查看>>
mpvue的使用(一)必要的开发环境
查看>>
MQ 重复消费如何解决?
查看>>
mqtt broker服务端
查看>>
MQTT 保留消息
查看>>
MQTT 持久会话与 Clean Session 详解
查看>>
MQTT介绍及与其他协议的比较
查看>>
MQTT工作笔记0007---剩余长度
查看>>
MQTT工作笔记0008---服务质量
查看>>
MQTT工作笔记0009---订阅主题和订阅确认
查看>>
Mqtt搭建代理服务器进行通信-浅析
查看>>
MS COCO数据集介绍
查看>>
MS Edge浏览器“STATUS_INVALID_IMAGE_HASH“兼容性问题
查看>>
ms sql server 2008 sp2更新异常
查看>>
MS SQL查询库、表、列数据结构信息汇总
查看>>
MS UC 2013-0-Prepare Tool
查看>>
MSBuild 教程(2)
查看>>
msbuild发布web应用程序
查看>>