c++ 嵌套类 局部类

写在前面

嵌套类
函数的嵌套定义是否可以

主要内容

什么是嵌套类

在一个类中定义的类被称为嵌套类,定义嵌套类的类被称为外部类。

为什么使用嵌套类

对类进行嵌套通常是为了帮助实现另一个类,并避免名称冲突。
往往是因为外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现,且同时可以对用户隐藏该底层实现。

class A
{
public:
    struct B{... };
    ...
};

嵌套类的声明位置决定了嵌套类的作用域,即它决定了程序的那部分可以创建嵌套类的对象。
如果嵌套类声明在一个类的私有部分,则只有嵌套类的外部类可以知道它。
如果嵌套类声明在一个类的保护部分,对于后者是可见的,对于外界是不可见的。派生类知道该嵌套类,并且可以直接创建这种类型的对象。
如果嵌套类声明在一个类的公有部分,则允许后者,后者的派生类以及外部世界使用。然后在外部使用时,必须加上外部类的外部类作用域限制符。

外界使用B的时候,必须A::B instance;

注意

但它是一个独立的类,基本上与外围类不相关。它的成员不属于外围类,同样,外围类的成员也不属于该嵌套类。嵌套类的出现只是告诉外围类有一个这样的类型成员供外围类使用。并且,外围类对嵌套类成员的访问没有任何特权,嵌套类对外围类成员的访问也同样如此,它们都遵循普通类所具有的标号访问控制。

什么是局部类

类也可以定义在函数体内 这样的类被称为局部类(local class), 局部类只在定义它的局部域内可见。
与嵌套类不同的是,在定义该类的局部域外没有语法能够引用局部类的成员。
因此,局部类的成员函数必须被定义在类定义中
在实际中,这就把局部类的成员函数的复杂性限制在几行代码中,否则,对读者来说,代码将变得很难理解。

扩展

c++是不支持嵌套函数定义的,也就是说在函数内部定义函数是不可行的。
具体分析不在这里阐述 可看我另一篇博客。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值