c++中程序是怎么执行的??

有谁能具体说说这程序到底是怎么执行的啊?最后结果我怎么也想不通,求解释...... 有谁能具体说说这程序到底是怎么执行的啊?最后结果我怎么也想不通,求解释... 展开
 我来答
百度网友b0e28cae4
2012-12-05 · TA获得超过4016个赞
知道大有可为答主
回答量:1275
采纳率:85%
帮助的人:616万
展开全部
首先你记住几条规则:
1)构造函数。
在实例化一个类的对象的时候,不显示的调用构造函数,那么会调用默认构造函数(也就是不用指定任何参数的构造函数)。

比如语句:Point A[2];
实例化了两个 Point 类的对象 A[0],A[1];在实例化的时候没有传入任何参数,因此调用的是默认的构造函数,也就是构造函数:Point::Point()。

【注意】构造的顺序是按出现的顺序依次构造;因此先构造 A[0],然后构造 A[1]。

2)析构函数。
在实例化一个类的对象时,会调用构造函数;
相应的,在对象离开的作用域的时候(也即执行到对象所在的花括号"{}"外的时候),
这个对象会被析构,这时候会调用析构函数。

我们来看 Point A[2];
它们所在的作用域,也就是最近的一对花括号:
int main()
{// Point A[2]; 作用域开始

...
Point A[2];
...

}// Point A[2]; 作用域结束

可以看出,Point A[2]; 的作用域就是整个 main 函数。因此,在 main 函数结束的时候,它们会被析构。
进一步的说,是在 main 函数的 return 0 ; 语句刚要被执行的时候,它们会被析构。

【注意】析构的顺序是构造的顺序相反的,因此先析构 A[1],然后析构 A[0]。

-----------------------------------------------------------------------------------------------------------

知道上面两条规则,就能分析程序的输出结果了:
1)cout<<"Entering main..."<<endl ;
这条语句出现在 main 函数第一天,毫无疑问是最先被执行的。
它【输出:Entering main...】

2)Point A[2];
这语句"规则1"已经分析过,A[0],A[1]分别调用了一次默认构造函数 Point();
它输出两行:
【A[0] 的构造函数:"Default constructor called"】
【A[1] 的构造函数:"Default constructor called"】

3)cout << "Existing main..."<<endl;
这条语句是 return 0; 语句之前的最后一条语句。
它【输出:Existing main...】

4)这里即将要执行 return 0 语句了。main 函数想来还有两件很重要的事情没有做,你想起来了吗?没想起来去看看”规则2“。
没错,在程序结束前要调用析构函数,析构 Point A[2]。

【A[1] 的析构函数:"Destructor called"】
【A[0] 的析构函数:"Destructor called"】

注意这里的析构顺序,不是我写错了,就是先 A[1] 后A[0]。

5)执行 return 0,程序真正的结束了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式