【问题标题】:Why C++ allows returning ifstream object?为什么 C++ 允许返回 ifstream 对象?
【发布时间】:2021-04-13 14:13:40
【问题描述】:

在 C++98 中,以下代码无法编译,因为 ifstream 没有复制构造函数:

#include <iostream>
#include <fstream>
using namespace std;

ifstream f() {
    return ifstream("main.cpp");
}

int main() {
    ifstream st= f();
}

但是,在 C++11 中使用多个 GCC 版本时,编译时不会出现警告。这是什么原因?

【问题讨论】:

标签: c++ c++11 fstream xvalue


【解决方案1】:

C++11 添加了移动构造函数。流现在已移动。这里的源对象是返回表达式中的一个临时对象,可以移动到main中的st对象。

【讨论】:

    猜你喜欢
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多