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

友元类和嵌套类

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

友元类

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

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

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

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

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

嵌套类

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

类的嵌套和包含

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

嵌套类的作用域特征:

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

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

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

相关文章

  • 友元类和嵌套类

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

  • C++ Primer Plus习题及答案-第十五章

    习题选自:C++ Primer Plus(第六版)内容仅供参考,如有错误,欢迎指正 !友元类和嵌套类[https:...

  • C++入门10 -- 友元,内部类,运算符重载

    友元 友元包含友元函数和友元类; 若将函数A(非成员函数)声明为类C的友元函数,那么函数A就能直接访问类C对象的所...

  • C++ 友元,内部类,运算符重载

    友元 友元包括友元函数和友元类 如果将函数A(非成员函数)声明为类C的友元函数,那么函数A就能直接访问类C对象的所...

  • 类模板中的友元函数

    今天写cpp的时候,忘记了类模板中的友元怎么用了记录一下 先声明类模板,和友元函数 类模板中声明友元函数 类模板外...

  • 友元类及友元函数

    简单介绍一下友元类和友元函数: 声明友元方式:将其他外部函数或其他类中的成员函数声明为一个类的友元函数。 作用:通...

  • 友元函数和友元类

    采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间...

  • C++ 友元函数

    类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元...

  • 友元函数

    类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元...

  • c++ 11、面向对象(友元函数和友元类)

    类的友元函数是定义在类外部,但有权访问类的所有成员,包括public,protected和private成员。友元...

网友评论

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

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