3-3 构造函数的调用(高级)
Time Limit: 1000MS
Memory Limit: 65536KB
Problem Description
通过本题目的练习可以掌握创建普通对象、创建对象数组和动态创建和析构对象时调用构造函数和析构函数的时机;
要求创建一个类A;类中仅包含构造函数和析构函数,按照程序的输出写出类的定义和主函数main中的代码。
Input
无
Output
输出共有11行数据,分别如示例输出所示
Example Input
无
Example Output
----begin main--- constructing an object of A constructing an object of A Destructing an object of A ******* constructing an object of A constructing an object of A ----end main--- Destructing an object of A Destructing an object of A Destructing an object of A
我的理解:第一个跟第三个是同一个,第二个是全局的,所以跟最后一个一起,第四个第五个就跟第六第七个一起的。为了实现第一个的提前析构,我们可以使其作为一个局部变量用一个块来存放,所以在块结束时就会析构,为了使第二个晚点析构,就可以定义他为全局变量,最后析构
#include <iostream>
#include <algorithm>
using namespace std;
class pos
{
public:
void a()
{
cout<<"constructing an object of A"<<endl;
}
~pos ()
{
cout<<"Destructing an object of A"<<endl;
}
};
pos t2;
int main()
{
{
pos t1;
cout<<"----begin main---"<<endl;
t1.a();
t2.a();
}
cout<<"*******"<<endl;
{
pos t3,t4;
t3.a();
t4.a();
cout<<"----end main---"<<endl;
}
return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;
class pos
{
public:
void a()
{
cout<<"constructing an object of A"<<endl;
}
~pos ()
{
cout<<"Destructing an object of A"<<endl;
}
};
pos t2;
int main()
{
{
pos t1;
cout<<"----begin main---"<<endl;
t1.a();
t2.a();
}
cout<<"*******"<<endl;
{
pos t3,t4;
t3.a();
t4.a();
cout<<"----end main---"<<endl;
}
return 0;
}