[英]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.