> 백엔드 개발 > C++ > 동일한 이름을 가진 생성자 초기화: C 표준 준수?

동일한 이름을 가진 생성자 초기화: C 표준 준수?

Patricia Arquette
풀어 주다: 2024-11-15 10:18:03
원래의
409명이 탐색했습니다.

Constructor Initialization with Same Name: C   Standard Compliance?

동일한 이름을 사용하는 멤버 변수의 생성자 초기화: C 표준 준수?

질문:

C 내에 있습니까? 멤버와 동일한 이름을 공유하는 생성자 인수를 사용하여 멤버 변수를 초기화하는 표준 변수?

예:

class Blah {
    std::vector<int> vec;

public:
    Blah(std::vector<int> vec): vec(vec)
    {}
};
로그인 후 복사

답변:

예, 이는 합법적이며 다음에 따라 작동하도록 보장됩니다. C

설명:

C 표준의 섹션 12.6.2/7에는 "mem-initializer의 표현식 목록에 있는 이름은 mem-initializer가 지정된 생성자의 범위입니다." 즉, 생성자 인수와 멤버 변수는 별개의 개체이지만 동일한 이름을 사용합니다.

이를 통해 예제와 같이 생성자 인수의 값으로 멤버 변수를 초기화할 수 있습니다.

참고:

불필요한 객체 복사를 피하기 위해 생성자 인수에 const 참조를 사용하는 것이 좋습니다. 따라서 다음을 사용하는 것이 더 바람직합니다.

Blah(const std::vector<int> &vec): vec(vec) {}
로그인 후 복사

위 내용은 동일한 이름을 가진 생성자 초기화: C 표준 준수?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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