在类的构造函数中初始化ifstream变量

时间:2016-09-30 08:15:47

标签: c++ constructor ifstream

如何在类的构造函数中初始化ifstream变量? 下面给出的是类和构造函数。我正在使用初始化列表来初始化ifstream变量。以下代码有效。

class A
{
public:
A(ifstream& in1);  // constructor

private:
ifstream& input;  // reference to the input stream
};

A::A(ifstream& in1) :input(in1)
{
//counstructor used to initialise the member variables. Initialization list     used to initialize.
}

为什么以下代码不起作用?

A::A(ifstream& in1) 
{
input=in;
}

2 个答案:

答案 0 :(得分:0)

参考资料必须在声明时初始化。

A::A(ifstream& in1) :input(in1)

这在声明时初始化它。成员初始值设定项列表是初始化构造函数中的引用的方法。

input=in;

这不是。

答案 1 :(得分:0)

无法使用作业初始化参考。一旦它被初始化,它只是它所指的任何别名。对它的赋值是对它引用的赋值,std::ifstream不可复制。

相关问题