本文首发于个人博客
内部类
- 如果将类A定义在类C的内部,那么类A就是一个内部类(嵌套类)
- 内部类的特点
- 支持public、protected、private权限
- 成员函数可以直接访问其外部类对象的所有成员(反过来则不行)
- 成员函数可以直接不带类名、对象名访问其外部类的static成员
- 不会影响外部类的内存布局
- 可以在外部类内部声明,在外部类外面进行定义
如下的Car
类就是Person
类的内部类
1 | class Person { |
局部类
- 在一个函数内部定义的类,称为局部类
- 局部类的特点
- 作用域仅限于所在的函数内部
- 其所有的成员必须定义在类内部,不允许定义static成员变量
- 成员函数不能直接访问函数的局部变量(static变量除外)
如下Car
类就属于局部类
void test() {
static int age = 10;
// 局部类
class Car {
public:
void run() {
age = 20;
}
};
Car car;
car.run();
}