C에서 정적 멤버 변수 초기화
객체 지향 프로그래밍(OOP)에서는 클래스 내에 멤버 변수를 갖는 것이 일반적입니다. 그러나 C의 정적 멤버 변수는 클래스 정의 외부에서 초기화된다는 점에서 비정적 멤버 변수와 다릅니다. 이는 질문을 제기합니다: 왜 이런 경우입니까?
논리적 제약 조건
struct Gizmo { static string name = "Foo"; };
이 예에서는 헤더 파일을 포함하는 모든 번역 단위에 name이 정의되어 규칙을 위반합니다.
역사적 관점
일부 개발자는 클래스 내 초기화가 더 직관적이고 덜 혼란스러울 것이라고 주장합니다. 그러나 C 표준은 다음과 같은 이유로 이 동작을 변경하지 않았습니다.
결론
정적 멤버의 외부 초기화 요구 사항 C의 변수는 논리적 제약 조건과 역사적 고려 사항에 따라 결정됩니다. 하나의 번역 단위로 초기화를 중앙 집중화함으로써 표준은 일관성, 단일 정의 규칙 준수 및 기존 C 코드와의 역호환성을 보장합니다.
위 내용은 C의 정적 멤버 변수가 클래스 정의 외부에서 초기화되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!