동일한 이름의 생성자 인수를 사용하여 멤버 변수 초기화
C에서는 동일한 이름의 생성자 인수를 사용하여 멤버 변수를 초기화하는 것이 가능합니다. 멤버 변수로. 이 기술은 아래 예에서 볼 수 있듯이 g 4.4 및 clang으로 컴파일할 때 경고나 오류 없이 작동하는 것으로 확인되었습니다.
class Blah { std::vector<int> vec; public: Blah(std::vector<int> vec): vec(vec) {} void printVec() { for (unsigned int i = 0; i < vec.size(); i++) printf("%i ", vec.at(i)); printf("\n"); } };
C 표준(§12.6.2/7)에 따르면, 이 초기화는 합법적이며 작동이 보장됩니다. mem-initializer의 표현식 목록에 있는 이름은 생성자의 범위에서 평가되므로 this 포인터를 사용하여 초기화되는 객체를 참조할 수 있습니다.
위 예에서 생성자 인수는 vec는 동일한 이름을 가진 멤버 변수 vec로 초기화됩니다. 이 초기화는 Blah 클래스의 객체가 생성될 때마다 발생합니다.
권장사항
원본 벡터 객체의 불필요한 복사를 피하기 위해 생성자 매개변수를 const 참조로 허용하는 것을 고려하세요. , 아래와 같이:
Blah(const std::vector<int> & vec): vec(vec) {}
위 내용은 동일한 이름의 생성자 인수를 사용하여 C 멤버 변수를 초기화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!