局部类定义
在函数内部定义的类,是局部类
注意点
- 只能在局部类所在的函数内创建对象,所在函数外无法创建局部类的对象.
- 因为局部类在函数内部,所以函数释放的时候,函数里面创建的类对象也被释放了.
- 局部类不能定义static静态变量,因为静态变量可以在全局区初始化赋值,而局部类定义在函数里面,函数释放就会销毁,所以不能定义静态变量
- 局部类可以使用所在函数内的静态变量
- 局部类不能直接使用所在函数内的局部变量
代码示例
#include <iostream>
using namespace::std;
void test(){
int s_age = 3;
static int s_age2 = 4;
class Person{
private:
int age;
int money;
public:
//static int age2 ;//局部类不能定义static静态变量,因为静态变量可以在全局区初始化赋值,而局部类定义在函数里面,函数释放就会销毁,所以不能定义静态变量
Person(int a,int b):age(a),money(b){ //Person是局部类,因为定义在函数test()里面
}
void display(){
cout<<age<<endl<<money<<endl;
}
void display2(){
// cout<<s_age<<endl;//编译报错,不能直接使用函数内的局部变量
cout<<s_age2<<endl;//可以使用函数内的静态变量
}
};
Person p1(10,111);
p1.display();
p1.display2();
}
int main(int argc, const char * argv[]) {
test();
//Person a;//编译报错,函数外无法创建局部类的对象
}