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行时是不同的
lllll