通过构造函数进行隐式类类型转换创建的临时对象何时被销毁

when did the temporary object created by implicit class-type conversion through constructers get destroyed

本文关键字:临时对象 创建 何时 类型转换 构造函数      更新时间:2023-10-16

要使描述更加具体,请参阅下面来自C++Primer第4版的代码:

class Sales_item {
public:
    Sales_item(const std::string &book = "")
      : isbn(book), units_sold(0), revenue(0.0) {}
    Sales_item(std::istream &is);
    //as before
} 
Sales_item item;
item.same_isbn(cin);

书中说,这段代码通过使用构造函数函数将cin隐式转换为Sales_item,构造函数通过读取标准输入创建了一个(临时)Sales_item[/em>对象。

那么,临时对象什么时候会被破坏?在这种情况下使用隐式转换是否有害?

一旦创建临时对象的完整表达式完成执行。在你的情况下,它是在完成最后一行之后。通常情况下,除非您试图保存指向临时对象的指针/引用,否则这是无害的。