缺省情况下C++以值传递方式传递对象到函数。除非你另外指定,否则函数参数都是以实际参数的复件(副本)为初值,而调用端所获得的亦是函数返回值得一个副本。这些复件由copy构造函数产生,会造成昂贵的费时操作。举个单一类(不存在继承关系)的例子,在函数以值方式传递对象,并要求返回对象时,对象会调用两次拷贝构造函数,分别是在实参赋值形参和返回对象时进行调用。因为函数内部参数在内存栈中进行分配,所以当函数返回时,会至少调用一次析构函数来回收资源。
拷贝构造函数在以下情况下会被调用:
1. 当用类的一个对象去初始化类的另一个对象时。
2. 如果函数的形参是类的对象,调用函数时,进行形参和
- 1
- 2
前往页