zoukankan      html  css  js  c++  java
  • 局部类

      实际应用中大部分的类都是定义在头文件中,且一个头文件一般都只定义一个类,这样做不仅代码简洁,逻辑清楚其实还有一个好处就是保持类的定义一致

      类可以在函数体内定义,但是在函数体内定义的类即局部类受到了一些限制,所以类一般都不定义在函数体内;

      在函数体外定义类时,在各个知道的源文件中可能只有一处该类的定义,而且如果要在不同的文件中使用同一个类,类的定义就必须保持一致,

      为了确保各个文件中的类定义一致,类通常定义在头文件中,而且当一个头文件中只有一个类时,类所在头文件的名字应与类的名字一样

      

      局部类:局部类的所有成员(包括函数在内)都必须完整定义在类的内部。因此,局部类的作用与嵌套类相比相差很远

        在实际编程的过程中,因为局部类的成员必须完整定义在类的内部,所以成员函数的复杂性不可能太高。局部类的成员函数一般只有几行代码,否则我们就很难读懂它了。

        类似的,在局部类中也不允许声明静态数据成员,因为我们没法定义这样的成员。

      局部类不能使用函数作用域中的变量

        局部类对其外层作用域中名字的访问权限收到很多限制,局部类只能访问外层作用域定义的类型名,静态变量以及枚举成员。

        如果局部类定义在某个函数内部,则该函数的普通局部变量不能被局部变量使用

      常规的访问保护规则对局部类同样适用

        外层函数对局部类的私有成员没有任何访问特权。当然,局部类可以将外层函数声明为友元:或者更常见的情况是局部类将其成员声明成公有的。

        在程序中有权访问局部类的代码非常有限。局部类已经封装在函数作用域中,用过信息隐藏进一步封装就显得没有什么必要了

      局部类中的名字查找

        局部类内部的名字查找次序与其他类相似。在声明类的成员时,必须先确保用到的名字位于作用域中,然后再使用该名字。

        定义成员时用到的名字可以出现在类的任意位置。如果某个名字不是局部类的成员,则继续在外层函数作用域中查找;如果还没找到,则在外层函数所在作用域中查找

      嵌套的局部类

        可以在局部类的内部再嵌套一个类,此时,嵌套类的定义可以出现在局部类之外。不过,嵌套类必须定义在与局部类相同的作用域中。

        void foo() 

        {

          class Bar {

            public:

              //...

              class Nested;  //声明Nested类

          }

          // 定义Nested类

          class Bar::Nested {

            //...

          };

        }

        和往常例子一样,当我们在类的外部定义成员时,必须指明该成员所属的作用域。因此在往常的例子中,Bar::Nested的意思是Nested是定义在Bar的作用域内的一个类。

        局部类内的嵌套类也是一个局部类,必须遵守局部类的各种规定。嵌套类的所有成员都必须定义在嵌套类内部

  • 相关阅读:
    eclipse如何与git 配合工作。
    git托管代码(二)
    PPC2003 安装 CFNET 3.5成功
    我的Window Mobile WCF 項目 第三篇 WM窗体设计
    我的Window Mobile WCF 項目 第一篇Mobile开发和WinForm开发的区别
    我的Window Mobile WCF 項目 第七天
    我的Window Mobile WCF 項目 第二篇 WindowsMobile访问WCF
    WCF 用vs2010 和 vs2008的简单对比测试
    vs2010beta1 和 搜狗输入法 冲突,按下 Ctrl 键就报错,重装搜狗解决
    我的Window Mobile WCF 項目 第六天 (二)
  • 原文地址:https://www.cnblogs.com/qianqiannian/p/6598498.html
Copyright © 2011-2022 走看看