> 백엔드 개발 > C++ > C 클래스 내 초기화 프로그램이 `=` 또는 `{}`를 사용해야 하는 이유는 무엇입니까?

C 클래스 내 초기화 프로그램이 `=` 또는 `{}`를 사용해야 하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-19 02:36:43
원래의
691명이 탐색했습니다.

Why Must C   In-Class Initializers Use `=` or `{}`?

클래스 내 초기화에 같음이나 중괄호가 필요한 이유

C 11에서는 클래스 정의 내에서 멤버 변수를 직접 초기화할 수 있는 클래스 내 초기화를 도입합니다. 그러나 이러한 초기화 프로그램은 특정 구문 규칙을 준수해야 합니다.

질문:

클래스 내 초기화 프로그램에서 등호(=) 또는 곱슬 기호를 사용해야 하는 이유는 무엇입니까? 바지 멜빵 ({})?

답변:

이 요구 사항은 잠재적인 구문 모호성을 제거하는 데 도움이 됩니다.

다음 예를 고려하십시오.

class BadTimes {
    struct Overloaded;
    int Overloaded; // Legal, but unusual.

    int confusing(Overloaded); // <-- Ambiguous line
};
로그인 후 복사

문제의 대사는 두 가지로 해석할 수 있습니다. 방법:

  1. 정수를 반환하는 단일 Overloaded 매개변수가 있는 함수 선언.
  2. 혼란이라는 정수 멤버의 선언 및 초기화로, 여기서 초기 값은 Overloaded입니다. 데이터 멤버.

이러한 모호함은 메소드 선언과 객체를 모두 나타낼 수 있는 괄호 사용으로 인해 발생합니다.

이러한 혼란을 해결하기 위해 C 11에서는 클래스 내 초기화에 중괄호를 사용해야 합니다. 이는 혼동이 멤버 변수임을 명시적으로 나타냅니다.

class BadTimes {
    struct Overloaded;
    int Overloaded; // Legal, but unusual.

    int confusing{Overloaded}; // <-- Clear initialization
};
로그인 후 복사

따라서 클래스 내 초기화는 구문 오해를 방지하고 코드 가독성을 보장하기 위해 등호 또는 중괄호를 사용해야 합니다.

위 내용은 C 클래스 내 초기화 프로그램이 `=` 또는 `{}`를 사용해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿