美文网首页
友元类和嵌套类

友元类和嵌套类

作者: 艰默 | 来源:发表于2022-12-09 18:14 被阅读0次

    友元类

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

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

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

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

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

    嵌套类

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

    类的嵌套和包含

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

    嵌套类的作用域特征:

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

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

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

    相关文章

      网友评论

          本文标题:友元类和嵌套类

          本文链接:https://www.haomeiwen.com/subject/ozozfdtx.html