析构函数应用实例
方案1
const int N =500; class Salary { public: Salary(int); void input( ); void show( ); ~Salary(); private: double salarys[N]; int number; //实际人数 };
方案2
class Salary { public: Salary(int); void input( ); void show( ); ~Salary(); private: double *salarys; int number; //实际人数 }; Salary::Salary(int n) { number = n; salarys=new double[number]; } Salary::~Salary() { delete []salarys; }
谁先分配? 谁先释放?
#include <iostream> using namespace std; class Salary { public: Salary(int); void input( ); void show( ); ~Salary(); private: double *salarys; int number; //实际人数 }; Salary::Salary(int n) { number = n; salarys=new double[number]; //分配大小正好合适的空间存放数据 } Salary::~Salary() { delete []salarys; } void Salary::input( ) { double x; int i; for(i=0; i<number; ++i) { cin>>x; salarys[i]=x; } } void Salary::show( ) { int i; for (i=0; i<number; i++) cout<<salarys[i]<<" "; cout<<endl; } int main( ) { Salary s1(50); s1.input( ); Salary s2(1248); s2.input( ); s1.show( ); s2.show( ); return 0; }