一、构造函数与析构函数
C++ 在类中的成员变量不能直接用 需要自己将变量所占的内存地方清零,否则直接用的话 除了赋值外都可能使程序出错,因此为了不让这种情况的发生,C++中专门设计了一种Constructor构造器 即构造函数 与类名相同 无返回类型。而析构函数就是做"清理善后"工作。在超过类的实例的Scope范围,系统就会自动调用该函数。简单来说在构造函数中又有默认构造函数(无参数)和自己定义的构造函数(有参数)之分。拷贝构造函数暂且不说明。下面通过一段代码,及其代码上所指示的标注对构造函数和析构函数的具体使用所一个简单说明,程序源码如下(点开即可)(代码中标注 (1)(2)(3)这样的序号 在注释区会有详细的解释):
1 #include<iostream> 2 using namespace std; 3 class X{ 4 5 public: 6 int x; 7 int *p; 8 X(){} //(1) 9 X(int y);//(2) 10 ~X(); //(3) 11 }; 12 X::X(int y) //注意这里没有void 的返回类型 因为析构和构造函数都没有返回类型 13 { 14 p =new int;//申请资源 (4) 15 x = y; //这实际上称为赋值 而不是初始化 16 cout<<"进入构造函数了其值为:"<<x<<endl; 17 } 18 X::~X() 19 { 20 delete p;//释放资源 21 //(5) 22 cout<<"进入的是变量值为 "<< x<<"的析构函数" <<endl;//可以看出退出构造函数的顺序 23 } 24 int main() 25 { 26 X a(12);//此时将12给了构造函数的形式参数 27 28 { 29 cout<<"进入变量b的scope "<<endl; 30 X b(10); 31 cout<<"退出变量b的Scope"<<endl; 32 } 33 34 return 0; 35 }