繁体   English   中英

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

[英]Initializing an ifstream variable in constructor of class

如何在类的构造函数中初始化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;
}

引用必须在声明时初始化。

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

这将在声明时对其进行初始化。 成员初始化器列表是在构造函数中初始化引用的方法。

input=in;

这不是。

引用无法使用分配初始化。 初始化后,它只是其所指名称的别名。 对其的赋值就是对其所指对象的赋值,并且std::ifstream是不可复制的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM