因此,如果我的对象没有被引用传递,则析构函数被调用两次.但是当我通过引用传递它时一切都很好.
<!-- 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;
}
Run Code Online (Sandbox Code Playgroud)
为什么析构函数被调用两次?当将它作为参数传递给重载运算符时,为什么要通过引用传递我的对象?
它被调用两次,因为当你通过值传递时,你实际上正在制作一个对象的副本,所以有两个要破坏的对象.
关于第二个问题,再一次,通过引用传递新对象可以避免创建数据的新副本.如果您没有设计复制构造函数,这会更有效并避免意外行为.