0

因此,如果我的对象没有通过引用传递,则析构函数会被调用两次。但是当我通过引用传递它时,一切都很好。

<!-- language: lang-cpp -->

ostream& operator<<(ostream& os,Counter_naslednik_1 &object){
 cout<<endl<<object.date<<endl;
 return os;
 }

//-----------------
void main(){
Counter_naslednik_1 new_object;
cout<<new_object;
}

为什么析构函数被调用两次?在将对象作为参数传递给重载运算符时,为什么要通过引用传递对象?

4

1 回答 1

5

它被调用了两次,因为当你通过值传递时,你实际上是在复制你的对象,所以有两个对象要销毁。

关于您的第二个问题,再次通过引用传递新对象可以避免制作数据的新副本。如果您尚未设计复制构造函数,这将更有效并避免意外行为。

于 2012-11-29T13:00:45.863 回答