2013-06-24 1 views
1
friend ostream &operator<<(ostream &os, const CSnmpMaintenanceSwitch &sw); 
+2

을 수정하지 않습니다 quaranteed된다. –

+0

이 선언에서 신비 스럽거나 불분명 한 것은 무엇입니까? – curiousguy

답변

1

음, 그것이 < < 제 파라미터와 제 매개 변수로 CONST CSnmpMaintenanceSwitch & 본 작동 수도로서 ostream에 & 복용 (확실히 글로벌 네임 스페이스 또는 현재 클래스의 네임 스페이스) 작업자 존재 의미 현재 클래스 (CSnmpMaintenanceSwitch)의 비공개 멤버에 액세스하십시오.

0

문자 그대로? 왼쪽에 ostream, 오른쪽에 CSnmpMaintenanceSwitch이있는 독립형 << 연산자에 대한 선언입니다. 표현식은 ostream 참조를 산출합니다.

의미 상? 스트림 삽입 연산자입니다. std::cout << someString;을 어떻게 말할 수 있는지 알고 계십니까? 음, 그 이유는 어딘가에 ostream& operator<<(ostream& os, const string &str);이라는 선언이 있기 때문입니다. 당신이 물어보고있는 라인은 CSnmpMaintenanceSwitch 클래스에서 거의 확실하게 발견되었고, 그 연산자는 그 객체들 중 하나를 출력하는데 필요한 액세스를 제공합니다. 자 이제 std::cout << mySnmpMaintenanceSwitch;이라고 말할 수 있습니다.

0

이 행은 std::ostream 인스턴스에 대한 참조와 CSnmpMaintenanceSwitch 인스턴스에 대한 상수 참조라는 두 개의 매개 변수를 취하는 operator<<을 선언합니다. 그것은 당신이 friend은 그래서 CSnmpMaintenanceSwitch의 개인 보호 멤버에 액세스 할 수 있습니다로 선언

operator<< (std::cout , CSnmpMaintenanceSwitchInstance); 

또는

std::cout << CSnmpMaintenanceSwitchInstance; 

운영자와 같은 출력 스트림에 CSnmpMaintenanceSwitch의 인스턴스에 대한 몇 가지 정보를 기록 할 수 있습니다.

기본 스트림이 oeprator<< 인 출력 스트림을 수정해야합니다 (일부 데이터가 수정되어야 함). 첫 번째 매개 변수는 비 상수 참조로 선언됩니다. (기본값 본성에 의해) operator<<은 변경하지 않아야하기 때문에

두 번째 매개 변수는 상수 참조로 선언된다.

0

이유는 그것이 friend으로 deaclared 이유는 직접 오버로드 된 연산자에서 일부 개인 변수에 도달하고 사용할 수 있습니다. 당신이 constant reference으로 객체 CSnmpMaintenanceSwitch를 제공하기 때문에

, 그것 '연산자를 <<`클래스의`CSnmpMaintenanceSwitch` 과부하 전용 데이터

관련 문제