8
A
답변
31
그들은 반드시 어디에도 저장되지 않습니다. 가장 간단한 경우, 컴파일러는 누락 된 인수가있는 것처럼 함수 호출을 정확히 컴파일합니다. 예를 들어
, f()
에 두 통화
void f(int a, int b = 5) {
cout << a << b << endl;
}
f(1);
f(1, 5);
은 가능성이 정확히 같은 어셈블리 코드로 컴파일됩니다. 컴파일러에게 객체 코드에 대한 어셈블리 목록을 생성하도록 요청함으로써이를 확인할 수 있습니다.
내 컴파일러는 생성 : 당신이 볼 수 있듯이
movl $5, 4(%esp) ; f(1)
movl $1, (%esp)
call __Z1fii
movl $5, 4(%esp) ; f(1, 5)
movl $1, (%esp)
call __Z1fii
가, 생성 된 코드는 동일하다.
관련 문제
- 1. Objective-C 기본 인수 값
- 2. C의 기본 인수 값
- 3. 라켓의 기본 인수 값 설정
- 4. C++ 템플릿 인수 참조/값 특성
- 5. 해시 메소드 인수 값
- 6. 기본 Ruby 인수 변경
- 7. 기본 명령 행 인수
- 8. 기본 값
- 9. Groovy 명명 된 기본 인수
- 10. 템플릿 함수 특수화 기본 인수
- 11. C 스레드 인수
- 12. 콤보 상자의 기본 값 winforms C#
- 13. C++ 생성자에 대한 기본 인수 값은 어떻게 지정합니까?
- 14. 가변 길이 위치 지정 인수 뒤의 기본 키워드 인수
- 15. Drupal Views 인수 - 기본 인수 제공 : PHP 코드
- 16. 명명 된 및 기본 인수 Python의 클래스 인수
- 17. C++ - typedef "inside"템플릿 인수?
- 18. C# 동적 속성 인수
- 19. C, 가변 인수 기능
- 20. win32 C++ 넓은 인수
- 21. 생성자의 C++ 템플릿 인수
- 22. C++ 템플릿의 인수 생략
- 23. C++ 용 정수 인수
- 24. 통과 인수/인수가 C
- 25. 참조 인수 또는 구조로 반환 값
- 26. 문자열 입력에서 인수 값 가져 오기
- 27. CLLocationManager의 기본 좌표 값
- 28. SubSonic SimpleRepository - 기본 값
- 29. MySQL의 기본 DATETIME 값
- 30. 기본 선택 값 iphone
+1 - 기본 인수가 구현 파일이 아닌 헤더 파일에 지정되는 이유입니다. –
+1 나는 이것에 대해 깊이 생각해 본 적이 없지만 당신의 대답은 완벽합니다. 또한 사물을 상당히 단순화합니다. C++을 사용하기 시작했을 때 가상 함수가 기본 매개 변수 값을 가질 때 어떻게 오버라이드 될 수 있는지 궁금했습니다. 기본 값이 어떻게 든 시그니처를 수정하거나 더 많은 함수를 생성한다고 생각했지만 호출 사이트에서 처리 (함수 자체에 아무 것도하지 않음)하는 것이 가장 적합합니다. – stinky472
@stinky : 기본값을 변경하면 클라이언트가 다시 컴파일해야 함을 의미합니다 ... – fredoverflow