많은 변수가있는 생성자를 사용할 때. 먼저 그것을 초기화 한 다음 생성자에게 전달합니다. 이 방법을 사용하면 파일이나 콘솔로만 데이터를 입력 할 수 있습니다.C++ 클래스 생성자 및 istream 연산자 >>
그러나 istream 연산자를 사용할 때 >>. 기본 생성자를 사용하고 istream 연산자 >> 메서드에 넣습니다. 하지만 난 이런 식으로 기본 생성자 제외한 다른 생성자를 사용할 필요가없는 것으로 나타났습니다 있지만 특성을 파일이나 콘솔에 의해 입력 될 수 있습니다. 예를 들어 :
class Fraction { private: int numerator; int denominator; public: Fraction(int num,int den); Fraction(); friend istream& operator>>(istream& is,Fraction &frac); }; void main() { int num,int den; cin>>num>>den; Fraction fra(num,den); } istream& operator>>(istream& is,Fraction &frac) { is>>frac.numerator>>frac.denominator; return is; } void main() { Fraction f; ifstream inputFile("data.txt"); if(inputFile.file()) { cout<<"File cannot be opened!"<<endl; } inputFile>>f; inputFile.close(); //with input from console cin>>f; }
내 질문에 첫 번째 또는 두 번째를 사용하는 방법을 추천해야합니까?
먼저 코드가 작동해서는 안됩니다. 멤버'operator >>는 멤버 변수가 1 개만 있어야합니다. 비록 당신이 그것을 올바르게 만들지 만 그것이 이상하게 보일 것입니다 :'object >> stream'. 친구 연산자 >>를 만들어 사용하십시오. 'istream &'생성자를 제공하는 것은 조금 과장 될 것이고, 실제로는 자연스럽지 않을 것입니다. – Incomputable
True. 나는 운전자 >> –