C ++ 입문서 5 번째 노트 (14 장 과부하 연산 및 유형 변환) 입력 및 출력 연산자

1. 일반 설명

입력 및 출력 연산자는 비 멤버 함수 여야합니다. 그렇지 않으면 왼쪽에있는 피연산자가 다음 코드와 같이 클래스의 객체가됩니다.

Sales_data data;
data << cout;
  • IO 작업은 일반적으로 클래스의 비공개 데이터를 읽고 써야하기 때문에 입력 및 출력 연산자는 일반적으로 친구로 선언됩니다.
  • 입력 연산자는 입력이 실패 할 수있는 상황을 처리해야하지만 출력 연산자는 그렇지 않습니다.

2. 출력 연산자 <<

매개 변수 설명 :

  • 첫 번째 매개 변수는 일반적으로 상수가 아닌 ostream 객체에 대한 참조입니다. 그 이유는 스트림에 쓰면 상태가 변경되고 참조는 ostream 객체를 복사 할 수 없기 때문입니다.
  • 두 번째 매개 변수는 인쇄 할 유형의 상수 참조입니다.
  • 반환 값은 ostream 매개 변수입니다.

예.

ostream &operator<<(ostream &os,const Sales_data &item)
{
    
    
    os<<item.isbn()<<" "<<item.units_sold<<""
    <<item.revenue<<" "<<item.avg_price();

    return os;
}

참고 : 출력 연산자는 형식을 제어하는 ​​것이 아니라 주로 개체의 내용을 인쇄해야하며 출력 연산자는 줄 바꿈 문자를 인쇄해서는 안됩니다.

3. 입력 연산자 >>

매개 변수 설명 :

  • 첫 번째 매개 변수는 일반적으로 운영자가 읽을 스트림에 대한 참조입니다.
  • 두 번째 매개 변수는 읽을 (비상 수) 개체에 대한 참조입니다.
  • 반환 값은 istream 매개 변수입니다.

예.

istream &opertaor>>(istream &is,Sales_data &item)
{
    
    
    double price;// 不需要初始化,因为我们将先读入数据到`price`,之后才使用它

    is>>item.bookNo>>iten.units_sold>>price;
    //检查输入是否成功

    if(is)
    {
    
    
        item.revenue=item.units_sold*price;
    }else{
    
    
        item=Sales_data(); //输入失败:对象呗赋予默认的状态

    }
    return is;
}

노트:

  • 스트림에 잘못된 유형의 데이터가 포함 된 경우 읽기 작업이 실패하고 다른 후속 사용이 실패 할 수 있습니다.
  • 읽기 작업이 파일 끝에 도달하거나 입력 스트림에서 다른 오류가 발생하면 실패합니다.
  • 읽기 작업에서 오류가 발생하면 입력 연산자가 오류 복구를 담당해야합니다.

추천

출처blog.csdn.net/thefist11cc/article/details/113927916