首页 > 编程笔记 > C++笔记 阅读:15

C++嵌套类的用法(附带实例)

C++ 中,允许在一个类中定义另一个类,这样的类称为嵌套类。

例如,下面的代码在定义的 CList 类内部又定义了一个嵌套类 CNode:
class CList //定义CList类
{
public:
    class CNode //嵌套定义CNode类
    {
        friend class CList; //将CList类作为友元类
    private:
        int m_Tag; //CNode类的私有成员变量 m_Tag
    public:
        char m_Name[128]; //CNode类的公有成员变量m_Name
    }; //至此,CNode类定义结束
public:
    CNode m_Node; //定义CNode类型的成员变量m_Node
    void SetNodeTag(int tag) //定义成员函数 SetNodeTag()
    {
        m_Node.m_Tag = tag; //访问CNode类的私有成员变量,一般不允许访问,友元类则允许访问
    }
};
上述代码在 CList 类中嵌套定义了一个 CNode 类,并在其中定义了一个私有成员变量 m_Tag 和一个公有成员变量 m_Name。

CList 类作为外围类,通常不能访问嵌套类中的私有成员(虽然嵌套类在其内部定义),但上述代码在定义 CNode 类时将 CList 类作为自己的友元类,使得 CList 类能够访问 CNode 类的私有成员。

内部嵌套类只允许在其外围类域中使用,在其他类域或作用域中是不可见的。例如,在 main() 函数中定义一个 CNode 对象,会导致非法定义错误,因为对 main() 函数来说,嵌套类 CNode 是不可见:
int main(int argc, char *argv[])
{
    CNode node; //非法定义,不能访问 CNode类
    return 0;
}

相关文章