c++中程序执行顺序问题

有谁能具体说说这程序到底是怎么执行的啊?最后结果我怎么也想不通,求解释...
调用构造函数时是调用默认构造函数还是调用带形参的构造函数啊??

skyx6讲的也是正确的, 但我这里举例子, 可能更好理解.
int main()
{
count<<"enter"; //输出"enter"
Point a[2]; //定义两个元素, 对每一个元素执行其构造函数, 也就是Point(){...}
cout<<"exit"; //输出"exit";
return 0;
} //对每一个Point元素执行析构函数, 也就是~Point(){...}
所以, 就有这样的输出结果了.

你可以想像, 如果你这样:
Point a[2];
int main()
{
Point b[2];
cout<<"enter";
return 0;
}
是什么样的输出吗, 想像一下, 不难得出结论.追问

你能说说对象数组里每个元素在哪个地方执行??

追答

定义数组时, 会对每一个数组元素调用其默认构造函数.
你可以试一下. 如果你定义
class Point
{
private: Point(){};
};
则你不能生编译以下代码:
void main()
{
Point a[2];
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-05
这个例子中,在main函数里
Point A[2];这个地方声明了一个Point对象数组,并对这个数组进行初始化。声明的时候是没有带参数的,所以这里是调用了无参构造函数。只有Point A(1,2)这样的形式调用的才是有参的那个。这里你可以参考函数重载。因此这里输出两个default constructor called
这里由于数组A是申请在栈中的,所以函数结束的时候内存会被自动回收,因此程序会调用析构函数。两个对象,所以有两个destructor called追问

析构函数是在整个程序结束的时候调用还是在构造函数使用完后调用??

第2个回答  2012-12-05
孩子,你怎么同一个问题问两遍啊!
第3个回答  2012-12-05
这个不会
相似回答