c++内部类

1.概念
如果一个类定义在另一个类的内部,这个类就叫内部类。注意此时这个内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象取调用内部类。外部类对内部没有任何优越的访问权限。
2.特性
内部类可用定义在外部类的public,protected,private都是可以的
注意内部类可以直接访问外部类中的static,枚举类,不需要外部类的对象/类名。
sizeof(外部类)=外部类,和内部类没有任何关系。

### ### C++ 嵌套的定义 在 C++ 中,嵌套是指在一个内部定义的另一个。这种定义方式允许将的实现细节封装在外部类中,从而提高代码的模块化和可维护性。嵌套的语法与普通的定义似,但其作用域被限制在外围内部。例如: ```cpp class Outer { class Inner { // Inner 的成员和方法 }; }; ``` 嵌套可以访问外部类的私有成员,这使得嵌套在封装实现细节方面非常有用[^2]。 ### ### 使用方法 嵌套的实例化通常需要先实例化外部类。嵌套的对象可以访问外部类的成员,包括私有成员。例如,在以下代码中,`NestedClass` 可以访问 `OuterClass` 的私有成员 `outerPrivate`: ```cpp class OuterClass { private: int outerPrivate; public: class NestedClass { public: void accessOuter(OuterClass &outer) { outer.outerPrivate = 10; // 访问外部类的私有成员 } }; }; int main() { OuterClass outer; OuterClass::NestedClass nested; nested.accessOuter(outer); // 通过嵌套访问外部类的私有成员 return 0; } ``` ### ### 注意事项 在使用嵌套时,需要注意以下几点: - 嵌套的作用域仅限于其外部类内部。这意味着嵌套的成员函数只能访问外部类的成员,如果需要访问外部类的成员,必须通过外部类的对象或指针来访问。 - 在局部域中定义的嵌套,其定义必须出现在包含外围局部定义的局部域内。在局部域定义中的嵌套字必须由其外围限定修饰,在外围中,该嵌套的声明不能被省略。 - 嵌套不能直接访问外部类的成员,除非通过外部类的对象或指针。因此,嵌套通常需要一个指向外部类对象的指针或引用,以便能够访问外部类的成员[^3]。 ### ### 示例代码 下面是一个简单的示例,展示了如何在 `OuterClass` 中定义一个嵌套 `NestedClass`,并使用它来访问 `OuterClass` 的私有成员: ```cpp #include <iostream> class OuterClass { private: int outerPrivate; public: class NestedClass { public: void accessOuter(OuterClass &outer) { outer.outerPrivate = 10; // 访问外部类的私有成员 std::cout << "Accessed private member: " << outer.outerPrivate << std::endl; } }; }; int main() { OuterClass outer; OuterClass::NestedClass nested; nested.accessOuter(outer); // 通过嵌套访问外部类的私有成员 return 0; } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值