【问题标题】:Are Local class, Inner class and Nested class are the same things in C++?本地类、内部类和嵌套类在 C++ 中是一样的吗?
【发布时间】:2011-10-24 15:34:43
【问题描述】:

本地类、内部类和嵌套类在 C++ 中的含义相同吗?

【问题讨论】:

    标签: c++ inner-classes nested-class local-class


    【解决方案1】:

    本地类和嵌套类是不同的野兽。

    嵌套类是在另一个类的范围内声明的类。

    本地类在函数定义中声明。

    内部类是一个非标准的 C++ 术语,所以我不知道如何定义它。


    嵌套类:

    IBM 文档作为一个很好的文档 here
    总结:

    • 嵌套类的名称是其封闭类的本地名称。除非您使用显式指针、引用或对象名称,否则嵌套类中的声明只能使用可见结构,包括类型名称、静态成员以及来自封闭类和全局变量的枚举数。
    • 嵌套类的成员函数遵循常规访问规则,并且对其封闭类的成员没有特殊的访问权限。封闭类的成员函数对嵌套类的成员没有特殊的访问权限

    本地类:
    我的这个答案 here 记录了与本地类相关的细微之处。

    【讨论】:

    • 而且 C++ 中没有内部类。这是一个 Java 概念。
    【解决方案2】:

    引用C++11(N3290)草案:

    9.7 嵌套类声明 [class.nest]

    1 一个类可以在另一个类中声明。在另一个类中声明的类称为 嵌套类。

    9.8 本地类声明 [class.local]

    1 类可以在函数定义中声明;这样的类称为本地类。

    C++ 标准中没有指定内部类的概念。

    【讨论】:

      【解决方案3】:

      内部类捕获封闭类的this 引用。内部类实例的层次结构形成树结构。这是 Java 独有的。

      【讨论】:

        猜你喜欢
        • 2011-02-25
        • 1970-01-01
        • 1970-01-01
        • 2015-10-21
        • 1970-01-01
        • 2014-12-04
        • 2013-12-20
        • 2015-07-18
        • 2023-03-13
        相关资源
        最近更新 更多