C++之嵌套类

在 C++ 中,嵌套类是一个类被定义在另一个类的内部的情况。嵌套类可以访问外部类的私有成员,但外部类不能直接访问嵌套类的私有成员。嵌套类有时也称为内部类。

为什么使用嵌套类?

  1. 封装性:嵌套类可以隐藏在外部类内部,起到封装的作用,只有外部类可以访问嵌套类。

  2. 组织性:将相关的类放在一起,提高代码的可读性和可维护性。

#include <iostream>

class OuterClass {
private:
    int outerPrivate;

public:
    class NestedClass {
    public:
        void display(OuterClass& outer) {
            std::cout << "Nested Class accessing Outer Private Member: " << outer.outerPrivate << std::endl;
        }
    };

    OuterClass(int x) : outerPrivate(x) {}

    void display() {
        std::cout << "Outer Private Member: " << outerPrivate << std::endl;
    }
};

int main() {
    OuterClass outer(10);
    outer.display();
    
    OuterClass::NestedClass nested;
    nested.display(outer);

    return 0;
}

在这个示例中,NestedClass 是 OuterClass 的嵌套类。NestedClass 可以访问 OuterClass 的私有成员 outerPrivate。在 main 函数中,首先创建了 OuterClass 的对象 outer,然后创建了 NestedClass 的对象 nested,并通过 nested 访问了 outerPrivate

在C++中,嵌套类(内部类)的访问权限受到外部类的访问权限控制。具体来说,嵌套类可以访问外部类的所有成员,包括私有成员,但外部类不能直接访问嵌套类的私有成员。

访问权限总结如下:

  1. 内部类访问外部类

    • 内部类可以访问外部类的所有成员,包括私有成员。
    • 内部类可以在其内部直接访问外部类的成员,就像访问自己的成员一样。
  2. 外部类访问内部类

    • 外部类不能直接访问内部类的私有成员。如果外部类需要访问内部类的私有成员,可以提供公共接口或使用友元关系。

注意事项:

  1. 作用域:在外部类之外访问嵌套类时,需要使用外部类名作为前缀,如 OuterClass::NestedClass

  2. 访问权限:嵌套类可以访问外部类的私有成员,但外部类不能直接访问嵌套类的私有成员。

  3. 静态成员:嵌套类可以是静态的,也可以是非静态的。静态嵌套类的对象可以直接通过外部类名访问,如 OuterClass::NestedClass

嵌套类是 C++ 中一种强大的特性,能够帮助组织代码结构、提高封装性和可读性。

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值