友元类和嵌套类

友元类

友元函数用于类的扩展接口中,类并非只能拥有友元函数,也可以将类作为友元,该类称为友元类

友元类的所有方法都可以访问原始类的私有成员和保护成员,但也可以对其做更严格的限制,使得特定的成员函数成为另一个类的友元。

友元类和继承、包含的关系

我们为什么要提供友元类的这种接口呢,它既然可以从外部访问类的私有部分的权限,是不是与我们面向对象的编程思想相悖呢?答案显然是否定的,那我们举个例子分析一下,友元类存在的意义。

假设我们要编写一个模拟电视机和遥控器的程序,我们用TVRemote来分别表示电视机和遥控器,很显然,这两者之间不是is-a(电视机不是遥控器一种,遥控器也不是电视机的一种)关系,也不是has-a(电视机与遥控器没有明显的包含关系)关系,因此不能使用继承和包含的实现方法,但是遥控器可以调用电视机里面的某些功能,如调节音量、更换频道和开关机等等。这表明Remote类应该作为TV类的一个友元类,这样就可以轻松调TV类中的成员和成员函数,来完成自己的接口实现。因此友元类不仅没有与面向对象的编程思想相悖,而且提高了公有接口的灵活性。

嵌套类

c++允许将类的声明放在另外一个类中,在另外一个类中声明的类被称为嵌套类。对类进行嵌套的主要目的是为了帮助实现另外一个类,并避免名称冲突。

类的嵌套和包含

包含往往意味着将类对象作为另外一个类的成员,而嵌套不创建类成员,而是定义一种类型,该类型仅在包含嵌套类声明中有效。

嵌套类的作用域特征:

声明位置包含它的类是否可以使用它从包含它的类派生而来的类是否可以使用它在外部是否可以使用
私有部分
保护部分
公有部分是,通过类限定符来使用

(注:嵌套结构和枚举与嵌套类相似,也适用于上表。)

类声明的位置决定了类的作用域和可见性。类可见后,访问控制规则(公有、私有、保护、友元)决定程序对嵌套类成员的访问权限。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艰默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值