通过构造函数进行隐式类类型转换创建的临时对象何时被销毁
when did the temporary object created by implicit class-type conversion through constructers get destroyed
要使描述更加具体,请参阅下面来自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>对象。
那么,临时对象什么时候会被破坏?在这种情况下使用隐式转换是否有害?
一旦创建临时对象的完整表达式完成执行。在你的情况下,它是在完成最后一行之后。通常情况下,除非您试图保存指向临时对象的指针/引用,否则这是无害的。
相关文章:
- 为什么当我们有常量引用时创建临时对象?
- 为什么在按值返回时创建临时对象,而不是在按值传递给函数参数时创建临时对象
- 我试图创建临时对象的方式有错误吗
- 将项添加到矢量而不创建临时对象
- 在此初始化中创建的临时对象数
- 在没有返回值优化的情况下将两个对象加在一起时,将创建多少个临时对象
- C++:如何创建一个临时对象,包含一个指针 - 常量或非常量,具体取决于上下文
- 按值函数创建范围的临时对象
- 从函数返回引用是否会导致在使用'auto'时创建新的临时对象?
- C++17:是编译器为(静态存储持续时间)const引用绑定创建的可修改的临时对象(和存储)
- 临时对象创建
- 我如何知道何时创建和销毁临时对象
- C++矢量推回方法和临时对象创建
- 当我从内联函数返回字符串时,会创建多少个临时对象
- 我应该创建一个临时对象来实例化C++中的成员变量吗
- Visual Studio 在类型转换时不会创建临时对象
- 如何避免在使用初始值设定项列表构造时创建(和删除)临时对象
- 通过引用捕获异常时未创建临时对象
- 临时对象 - 何时创建它们,如何在代码中识别它们
- 何时调用使用"new"创建的临时对象'delete'?