"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 올바른 C++11 초기화 구문을 선택하는 방법과 이를 언제 사용합니까?

올바른 C++11 초기화 구문을 선택하는 방법과 이를 언제 사용합니까?

2024-11-09에 게시됨
검색:837

How to Choose the Right C  11 Initializer Syntax and When to Use Them?

C 11의 초기화 구문 딜레마

C 11의 도입으로 개발자는 클래스 초기화를 위한 새로운 구문 옵션 세트를 얻었습니다. 중괄호로 묶인 초기화 프로그램입니다. 이러한 선택의 폭은 수수께끼 같은 딜레마를 제시합니다. 각 구문 옵션을 언제 사용해야 합니까?

초기화 복사를 기본값으로 설정

제공된 지침은 개체에 정확한 값을 할당하려는 의도가 있는지 제안합니다. , 복사 초기화(=)를 선호해야 합니다. 이는 잠재적으로 다른 의미 체계를 가진 명시적 생성자를 실수로 호출할 위험을 최소화하기 때문입니다. 복사 초기화를 사용할 수 없는 경우 중괄호 초기화를 고려해야 하며, 괄호 초기화는 최후의 수단으로 사용해야 합니다.

대량 초기화를 위한 중괄호

중괄호 초기화는 여러 값으로 초기화할 때 탁월합니다. 객체 내에 저장됩니다. 이 구문은 벡터, 배열 및 복소수에 특히 적합합니다.

설명자 초기화를 위한 괄호

초기화 중에 제공된 값이 실제 데이터가 아닌 객체의 의도된 상태 또는 동작을 설명하는 경우 , 괄호 초기화를 사용해야 합니다. 이는 크기나 파일 이름을 지정하는 인수의 경우에 자주 발생합니다.

예제 응용 프로그램

다음 코드 조각을 고려하십시오.

{ // Example 1
  int b(1); // Copy initialization for exact value
  int a{1}; // Brace initialization for stored value
  int c = 1; // Parentheses initialization for descriptor value (e.g., size)
  int d = {1}; // Brace initialization for stored value
}
{ // Example 4
  std::function a(std::plus()); // Copy initialization for callback function
  std::function b{std::plus()}; // Brace initialization for callback function, likely unwanted
}

제안된 지침을 따르면 개발자는 C 11 이니셜라이저 구문의 복잡성을 자신있게 탐색하여 코드가 정확하고 효율적이라는 것을 확인할 수 있습니다.

릴리스 선언문 이 글은 1729686790에서 복제되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3