嵌套类/内部类/外部类

  

 

  一个类可以在另一个类中定义这样的类被称为嵌套类(nested class)——《C++ primer 3rd》。外面的类成为外围类(outer class),内部的称为内部类(inner class)。从定义上来说内部类的作用让人迷惑,为什么要定义在内部,定义在内部有什么作用?

 

1. 含义

    域,在C++中经常会用到这个概念, 也称为作用域,也成为块。把一个类称为到另一类中,其实就是使内部类的域被限制在外部类的域之中,可以认为是内部类增加了一个命名空间,外部类相当于一个namespace 名。对于防止命名冲突很有用处。外部类的作用域就不用多说了,保持原貌。内部类必须通过外部类才能对外界可见, 即外界必须通过外部类访问内部类。举个例子。

  

 

2. 访问控制符(public, protected,private)的作用

    对三个访问控制符的讲解各种资料都很详细,但是在内部类这部分不是很多。如果以前有一定基础了,在这部分就很容易明白。 public 允许外界不受限制访问它(public)所控制的域。 protected 允许子类和类的非静态成员函数访问。private 只允许类的非静态成员访问。举个例子。

 

 

通过上面的例子我想,对访问控制符理解不是很清楚的应该有一个很清楚的了解。

 

3. 嵌套类(内部类)作用

    嵌套类的一个作用是防止命名冲突,前面也提到了,比较容易理解不再举例。另一用处就是)《C++ primer 3rd》提到的可以避免使用friend操作。

 

 

这个部分可以参考C++ primer的相应部分。

 

  总结,嵌套类看似很复杂其实并没有增加新的规则, 只是C++一般特性的体现。包括 域, 访问控制, 继承等等。

 

思考: 有兴趣朋友可以考虑下面这种情况, 这个会出错吗? 为什么? 有什么用?。

class Outer

{

private:

    class Inner

    {};//具体简略

public:

    Inner get(){return Inner();}

};

 

 转载请注明来源。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值