美文网首页
局部类和嵌套类

局部类和嵌套类

作者: 安然_fc00 | 来源:发表于2017-04-13 22:12 被阅读0次

一. 嵌套类

1.1嵌套类的定义

在一个类体中定义的类叫作嵌套类。拥有嵌套类的类叫外围类。

1.2嵌套类的作用

定义嵌套类的初衷是建立仅供某个类的成员函数使用的类类型。目的在于隐藏类名,减少全局的标识符,从而限制用户能否使用该类建立对象。这样可以提高类的抽象能力,并且强调了两个类(外围类和嵌套类)之间的主从关系。

1.3嵌套类的使用示例
#include <iostream>
using namespace std;

class A
{
public:
    class B
    {
    public:
        B(char* name){
            cout<<"constructing B:"<<name<<endl;
        }
        void printB();
    };
    B b;
    A():b("In class A"){
        cout<<"constructing A"<<endl;
    }
};

void A::B::printB(){
    cout<<"B's member function"<<endl;
}

int main(int argc,char* argv[])
{
    A a;
    A::B b("outside of A");
    b.printB();
}

该程序的输出结果:

constructing B:In class A
constructing A
constructing B:outside of A
B's member function
1.4 对嵌套类的若干说明:

(1). 从作用域的角度来看,嵌套类与外围类是两个完全独立的类,只是主从关系,二者不能相互访问,也不存在友元关系。
(2). 从访问权限的角度来看,嵌套类既可为私有,也可为公有。在上面的例子中,嵌套类B的访问权限是public,可以在外围类的成员函数之外使用该嵌套类,使用时加上名字限定。如果将嵌套类B的访问权限设置为private,那么只能在外围类内使用。
(3). 嵌套类中的成员函数可以在它的类体外定义。
(4). 嵌套类可以访问外围类的静态成员变量和枚举成员,即使它的访问权限是私有的,访问方式通过”ClassName::staticVarName”来直接访问。

二. 局部类

2.1局部类的定义

在一个函数体内定义的类称为局部类。局部类可以定义自己的数据成员和函数成员。它也是一种作用域受限的类。

2.2使用示例
#include <iostream>
using namespace std;
int global=100;

void func(){
    static int s;
    class A{
//static int t;//编译出错
    public:
        int num;
        void init(int i){s=i;}
        void print(){
            num=global;
            cout<<num<<endl;
        }
    };

    A a;
    a.init(8);
    cout<<"s:"<<s<<endl;
    a.print();
}
int main(int argc,char* argv[])
{
    func();
}

输出结果:

s:8
100
2.3关于局部类的几点说明:

(1). 局部类只能在定义它函数内部使用,在其他地方不能使用。
(2). 局部类的所有成员函数都必须定义在类体内,因此在结构上不是特别灵活。
(3). 在局部类的成员函数中,可以访问上级作用域的所有变量,如函数局部变量、全局变量等。
(4). 局部类中不能定义静态数据成员,因为这种数据成员的初始化无法完成,静态成员数据的定义和初始化必须放在全局作用域。
(5). 在实践过程中,局部类很少使用。

相关文章

  • 《Kotlin 实战》- 4 类、对象和接口

    4.1.4 内部类和嵌套类:默认是嵌套类 默认情况下 Kotlin 的嵌套类不能访问外部类的实例(不持有外部类的引...

  • Java-嵌套类

    嵌套类分为两类:静态和非静态。被声明static的嵌套类称为静态嵌套类。非静态嵌套类称为内部类。内部类有两种特殊的...

  • 常见的类

    嵌套类 内部类 枚举类 密封类 数据类 单例模式 伴生对象 嵌套类 嵌套类是嵌套在其它类中的类 不能访问外部类的成...

  • Kotlin基础(6)-类的种类

    前言 本文主要介绍一下kotlin中的类种类。 嵌套类和内部类 kotlin的嵌套类和内部类在写法上只有inner...

  • C# 嵌套类

    在一个类或类的方法中定义另一个类,分为静态嵌套类(使用少)和非静态嵌套类(又称内部类)。嵌套类是外部类的补充,通过...

  • Java 内部类(嵌套类)和局部类

    嵌套类 定义在另一个类中的类,就叫嵌套类。在嵌套类外层的累,称为:外部类最外层的外部类,称为:顶级类 嵌套类又分为...

  • kotlin 嵌套类和内部类inner class

    嵌套类和内部类inner class学习笔记###

  • java-内部类的创建

    java 创建内部类时离不开他的外围类,除非内部类是嵌套类(即静态内部类),嵌套类中的内部类也是如此 比如: pu...

  • 内部类、枚举类

    内部类 在类中也可以定义类,默认是public,成为嵌套类 嵌套类用关键字inner标记,称为内部类。 内部类可以...

  • 特殊类

    嵌套类class A{class B{}}//使用嵌套类时,只能引用外部类的类名,不能调用外部类的构造函数val ...

网友评论

      本文标题:局部类和嵌套类

      本文链接:https://www.haomeiwen.com/subject/dovbattx.html