【转载】解读构造函数
http://www.cnblogs.com/ideaseek/archive/2010/08/01/1789855.html
近些日子,不记得构造函数的调用方式和顺序了,于是写了一段程序:
1: class A{
2: private :
3: int data;
4: public:
5: A(){
6: cout<<"调用默认构造函数"<<endl;
7:
8: }
9: A(const A&){
10: cout<<"调用拷贝构造函数"<<endl;
11: }
12: A & operator=(const A&){
13: cout<<"调用赋值构造函数和"<<endl;
14: }
15:
16: ~A(){
17: cout<<"调用析构函数"<<endl;
18: }
19:
20: A(int i):data(i){
21: cout<<"调用自定义构造函数"<<endl;
22: }
23: };
24:
25: A Play(A b){
26: return b;
27: }
28: int main()
29: {
30: A a;
31: A b=A(5);//隐式转换,调用Play(5)
32: A temp=a;
33: cout<<"main函数执行中..."<<endl;
34: return 0;
35: }
从中可以看出函数的调用顺序了吧,第30行调用的是默认的构造函数,而31行调用自定义的函数,32行调用拷贝构造函数,接着是return返回的三次析构。其中注意隐式转换问题。