void some_func(int param = get_default_param_value());
36
A
답변
47
기본 매개 변수는 전체 표현식 집합의 하위 집합이 될 수 있습니다. 컴파일시와 디폴트 매개 변수의 선언 장소에서 바인딩되어야합니다. 즉, 함수 호출 또는 정적 메서드 호출이 될 수 있으며 상수 및/또는 전역 변수 또는 정적 클래스 변수가 아니라 멤버 특성이 아니라면 여러 가지 인수를 사용할 수 있습니다.
컴파일 타임 및 함수가 선언 된 위치에서 바인딩된다는 사실은 변수를 사용하는 경우 다른 변수가 원본을 그림자로 표시하더라도 해당 변수가 사용된다는 것을 의미합니다. 함수 호출.
// Code 1: Valid and invalid default parameters
int global = 0;
int free_function(int x);
class Test
{
public:
static int static_member_function();
int member_function();
// Valid default parameters
void valid1(int x = free_function(5));
void valid2(int x = free_function(global));
void valid3(int x = free_function(static_int));
void valid4(int x = static_member_function());
// Invalid default parameters
void invalid1(int x = free_function(member_attribute));
void invalid2(int x = member_function());
private:
int member_attribute;
static int static_int;
};
int Test::static_int = 0;
// Code 2: Variable scope
int x = 5;
void f(int a);
void g(int a = f(x)); // x is bound to the previously defined x
void h()
{
int x = 10; // shadows ::x
g(); // g(5) is called: even if local x values 10, global x is 5.
}
11
꼭 그래야 할 필요는 없습니다. 기본 매개 변수는 특정 제한 내의 모든 표현식이 될 수 있습니다. 함수가 호출 될 때마다 평가됩니다.
관련 문제
- 1. C에서 기본 매개 변수가있는 함수 포인터
- 2. 시간대가 상수 또는 변수 여야합니까?
- 3. AJAX 함수 매개 변수가 null입니까?
- 4. 기본 템플릿 매개 변수가 생성자
- 5. 재정의 기본 경로에는 매개 변수가
- 6. 기본 매개 변수 및 컴파일 시간 상수
- 7. 함수 매개 변수가 설정되어 있는지 확인하십시오.
- 8. NuSOAP - 함수 매개 변수가 올바르게 매핑되지 않습니다.
- 9. JavaScript의 기본 함수 매개 변수
- 10. objective-c에서 상수 정의하기
- 11. 기본 케이스가 오픈 소스 여야합니까?
- 12. 왜 이러한 기본 매개 변수가 정의되어 있습니까?
- 13. RDS sane의 기본 mysql 매개 변수가 있습니까?
- 14. OOP의 기본 매개 변수가 좋지 않습니까?
- 15. Delphi Attributes에는 상수 매개 변수가 필요합니까? 그렇다면 왜?
- 16. Ruby에 상수 인스턴스 변수가 있습니까?
- 17. 매개 변수가
- 18. C에서 함수 #
- 19. C에서 메서드 매개 변수가 동적 일 수 있습니까?
- 20. C에서 다중 스레드의 정적 상수 변수에 액세스
- 21. 매크로가 함수 인수의 기본 매개 변수로 사용됩니다.
- 22. C#의 기본 함수 매개 변수
- 23. 함수 템플릿의 기본 템플릿 매개 변수
- 24. C++에서 기본 매개 변수가있는 함수 포인터
- 25. C# "상수 개체"를 기본 매개 변수로 사용
- 26. 템플릿 문제 (템플릿 함수 매개 변수가 아닌 'typename')
- 27. Internet Explorer에서 JavaScript 함수 매개 변수가 정의되지 않았습니다.
- 28. 요청 매개 변수가 떨어짐
- 29. 제어 매개 변수가 없습니다.
- 30. "매개 변수가 올바르지 않습니다"
문제를 명확하게 설명해 주셔서 감사합니다. –
전역 변수를 참조 할 수 있다는 것을 알지 못했습니다. 좋은 자료는 http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=/com.ibm.xlcpp8a.doc/language/ref/cplr237.htm 및 http : // msdn. microsoft.com/en-us/library/e1dbzf09(VS.80).aspx. –
함수 포인터를 통해 호출 할 수도 있습니다. if foo (int arg = (* fp)()); 여기서 fp는 foo가 선언 된 범위에서 검색되지만 foo()가 호출 될 때마다 * fp가 평가됩니다. – MSalters