2016-09-30 86 views
1

如何在類的構造函數中初始化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; 
} 

回答

0

引用必須在聲明時進行初始化。

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

這會在聲明中初始化它。成員初始化列表是在構造函數中初始化引用的方式。

input=in; 

這沒有。

0

引用無法使用賦值進行初始化。一旦它被初始化,它就是它引用的別名。分配給它的是它的引用,並且std::ifstream不可複製。