c++中拷贝构造函数、默认无参构造函数、析构函数的理解

时间:2023-01-02 19:47:52
 1 struct Exmpl
 2 {
 3     //无参默认构造函数
 4     Exmpl(){cout<<"Exmpl()"<<endl;}
 5     //拷贝构造函数
 6     Exmpl(const Exmpl&a){cout<<"Exmpl(const Exmpla&)"<<endl;}
 7     //赋值操作符
 8     Exmpl& operator=(const Exmpl& a){cout<<"opterot=(const Exmpl &)"<<endl;return *this;}
 9     //析构函数
10     ~Exmpl(){cout<<"~Exmpl()"<<endl;}
11 };
12 void foo2(Exmpl& a){}
13 void foo1(Exmpl a){}
14 Exmpl foo3(){Exmpl a;return a;}
15 int main()
16 {
17     Exmpl obj;
18     foo1(obj);
19     foo2(obj);
20     obj=foo3();
21     Exmpl *p=new Exmpl;
22     vector<Exmpl> v(3);
23     delete p;
24         system("pause");
25     return 0;
26 }

左边是VS2010的运行结果,右边是codeblocks的结果,可以看到2种编译器在处理代码中第20行 和22行时是不同的

c++中拷贝构造函数、默认无参构造函数、析构函数的理解lllll