클래스의 메서드에 대한 변수의 기본값이 정적이 아닌 메서드 나 같은 클래스의 멤버가 될 수없는 이유를 알고 싶었습니다.변수가 비 정적 메서드 나 클래스의 멤버가되도록 C++에서 기본값을 허용하지 않는 이유는 무엇입니까?
이유가 있습니까? 컴파일러가 정적이 아닌 기본값 클래스의 위치를 메서드에 제공 할 수 없습니까?
Google은 답변을 빨리 찾으려고했지만 좋은 답변을 찾을 수 없었습니다.
편집 : 여기 예가 있습니다.
class ClassTemp
{
static int s_member;
int MagicOperation(int defaultValue = s_member)
{
return defaultValue;
}
};
하지만이되지 않습니다 : :
이 법적으로 내 머리 위로 떨어져
class ClassTemp
{
int m_member;
int MagicOperation(int defaultValue = m_member)
{
return defaultValue;
}
};
무슨 뜻인지 예제 코드를 제공해 줄 수 있습니까? 일부 멤버 함수의 결과로 클래스 멤버 값을 초기화 하시겠습니까? – catchmeifyoutry
예, 명확히하십시오. "default value"로 필드 이니셜 라이저를 의미하는 경우 C++의 인스턴스 필드에 존재하지 않는 것보다'public : int x = 123; '은 이미 오류입니다. 생성자에서 이니셜 라이저 목록을 의미한다면 멤버 함수를 호출 할 수 있습니다. 즉,'struct foo {int bar; int baz(); foo() : bar (baz()) {}}'- 그러나 일부 컴파일러는 경고를합니다. –