一、类作用域
每个类都定义了自己的作用域称为类作用域类作用域中说明的标识符只在类中可见。类有一下几种作用域类型
1、块作用域
2、文件作用域
3、函数原型作用域
4、函数作用域
5、类作用域
二、前向声明
C++中类必须先定义,才能够实例化。这是显而易见的,因为编译器在看到了类的定义之后,才能知道为类对象分配多大的空间。
两个类需要相互引用形成一个“环形”引用时,无法先定义使用。这时候需要用到前向声明。注意:前向声明只是告诉编译器这是一个类类型,编译器此时并不知道该类的内存模型,所以不能声明该类的对象,也就是说,
前向声明的类不能实例化。
三、嵌套类
外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现,且同时可以对用户隐藏该底层实现。
从作用域的角度看,嵌套类被隐藏在外围类之中,该类名只能在外围类中使用。如果在外围类的作用域使用该类名时,需要加名字限定。
嵌套类中的成员函数可以在它的类体外定义。
嵌套类的成员函数对外围类的成员没有访问权,反之亦然。
嵌套类仅仅只是语法上的嵌入。
四、局部类
类也可以定义在函数体内,这样的类被称为局部类(loaclclass)。局部类只在定义它的局部域内可见。
局部类的成员函数必须被定义在类体中。
局部类中不能有静态成员。