#include <iostream>
using namespace std;
class sample
{
public:
int who;
sample(int id);
}
global_obj1(1),globl_obj2(2);
sample::sample(int id)
{
cout << "initializing" <<id <<'\n';
who =id;
}
int main(void)
{
sample local_obj(3);
cout << "this is NOT the first line displayed.\n";
sample local_obj2(4);
}
參考答案:我c++也不是很好,希望不要介意,我的理解为:
程序执行时,从主程序入口(int main(void)主函数)开始执行,执行第一行时,首先构造一个sample类型的一个名为local-obj的实例(而且带初始参数),下一步执行构造函数初始化工作,程序转入构造函数中,也就是sample类定义中。
sample类定义中有一个整型公有数据成员和一个外连构造成员定义,所以说程序在执行第一行后,应该输出 “initializing 3”同时 数据成员id已经被赋值为3,构造函数执行完后程序返回主函数中,继续执行第二行,输出“this is NOT the first line displayed.”
然后继续执行第三行,同第一行也是个类实例的实现的过程,又输出“initializing 4”同时数据成员id也被赋予4。
当然主函数执行结束后,并没有真正的程序结束完,因为程序本身还要析构掉刚才构造的两个实例,只不过析构的顺序与构造实例的顺序相反,请注意
!
参考资料:清华大学出版社 钱能