생성자의 멤버 배열 초기화
다음 C 클래스를 고려하세요.
class C { public: C() : arr({1, 2, 3}) {} // C() : arr{1, 2, 3} {} private: int arr[3]; };
코드는 생성자의 멤버 이니셜라이저 목록에 배열 멤버가 있습니다. 그런데 컴파일에 실패합니다.
질문:
답변:
1. 생성자의 배열 초기화
예, 생성자의 멤버 초기화 목록에서 배열을 초기화하는 것이 가능합니다. 그러나 중간 구조가 필요합니다:
struct A { int foo[3]; A(int a, int b, int c) : foo{a, b, c} {} }; class C { public: C() : foo(A(1, 2, 3)) {} private: A foo; };
2. C 03 표준
C 03 표준은 멤버 이니셜라이저 목록의 배열 초기화를 명시적으로 다루지 않습니다. 그러나 직접 초기화의 일반 규칙은 중괄호를 사용하여 배열을 초기화하는 것을 금지합니다.
3. C 11 목록 초기화
C 11에서는 중괄호를 사용하여 배열을 직접 초기화할 수 있는 목록 초기화를 도입했습니다.
class C { public: C() : arr{1, 2, 3} {} private: int arr[3]; };
이 경우 배열 이름 바로 뒤에 중괄호를 사용하는 구문이 사용됩니다. 유효하며 생성자의 멤버 초기화 목록에서 배열을 초기화합니다.
위 내용은 생성자의 멤버 이니셜라이저 목록에서 배열을 초기화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!