나는 그들이 똑같은 줄 알았지 만 온라인 판사 (endl(cout)
)에게 코드를 보냈을 때 "잘못된 대답"판결을 내렸고 cout << endl
으로 다른 사람을 보내려고했고 판사가 코드를 수락했습니다! 누구든지 그 명령의 차이점을 알고 있습니까?누구나 endl (cout)과 cout << endl의 차이점을 알고 있습니까?
4
A
답변
3
제가 아는 사람이 없습니다. 그냥 바로 함수를 적용, 당신은 std::cout
에 적용 할 때
ostream& endl (ostream& os);
:
std::endl
template <typename C, typename T>
basic_ostream<C,T>& operator<<(basic_ostream<C,T>& (*pf)(basic_ostream<C,T>&));
또한 바로 함수를 적용한다 : 한편
,std::basic_ostream
는 서명
operator<<
의 과부하를 갖는다.
따라서 기술적으로 차이는 없습니다. 스트림 std::cout << std::endl
이 더 관용적이지만. 판사 로봇이 단순하다는 생각이들 수도 있지만 실현하지는 못합니다.
2
유일한 차이점은 endl(cout)
은 전체 기능으로 간주되는 반면 cout << endl
에는 endl
이 조작자로 간주된다는 점입니다. 하지만 그들은 같은 효과가 있습니다.
1
두 양식 간의 동작에는 차이가 없습니다. 둘 다 조작자 (cout << endl
) 또는 자유 기능 (endl(cout)
)으로 사용할 수있는 동일한 endl
기능을 나타냅니다.
1
위의 답변은 정확합니다! 또한 << endl;
또는 endl(cout)
을 사용하는지 여부에 따라 코드의 줄 수를 줄일 수 있습니다.
예 :
당신은 같은 것을 할 수 있습니다그러나
cout << "Hello World" << endl;
또는
cout << "Hello World";
endl(cout);
,,617을cout << "Hello World" << endl(cout);
// 작동하지 않음
따라서이 예에서는 2 줄 대 1 줄입니다.
'std :: cout'을 사용하면 첫 번째 양식은 컴파일되지만 두 번째 양식은 (인수 별 조회로 인해) 컴파일되지 않습니다. 두 번째 양식이 작동하지만 첫 번째 양식이 온라인 판사의 경우와 다른 경우는 생각할 수 없습니다. – interjay