"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C++ 생성자에 기호가 두 개 있는 이유는 무엇입니까?

C++ 생성자에 기호가 두 개 있는 이유는 무엇입니까?

2024년 11월 18일에 게시됨
검색:998

Why Are There Two Symbols for C   Constructors?

C 생성자의 이중 기호

Itanium C ABI는 생성자의 잘못된 이름에 해당 유형과 매개 변수에 대한 정보가 포함되도록 지정합니다. 따라서 라이브러리에서 관찰되는 두 생성자 항목은 서로 다른 생성자 유형에서 비롯됩니다.

  • 완전 객체 생성자(C1): 이 생성자는 가상 기본 클래스를 포함하여 객체를 완전히 초기화합니다. .
  • 기본 개체 생성자(C2): 이 생성자는 데이터 멤버 및 가상이 아닌 기본 클래스와 함께 개체 자체를 초기화합니다.

이중 기호 및 다중 정의 오류

이중 항목이 있음에도 불구하고 C1 및 C2 접미사 사용으로 인해 충돌하는 기호 정의가 발생하지 않습니다. ABI는 손상된 이름이 고유하도록 보장하여 이러한 두 생성자 유형을 다르게 처리하기 위한 컴파일러 지원을 제공합니다.

추가 세부 정보

  • 가상 기반이 없는 경우 클래스의 경우 전체 객체 생성자와 기본 객체 생성자는 동일하며 기호는 충분한 최적화 하에서 동일한 코드에 별칭이 지정될 수 있습니다.
  • 이중 생성자 기호에 대한 필요성은 주로 다양한 객체가 상속될 수 있는 다형성에 대한 지원에 의해 결정됩니다. 특수한 초기화가 필요한 다른 기본 클래스입니다.
  • 이 동작은 한때 c filt 출력에 표시되었지만 더 이상 포함되지 않습니다.
최신 튜토리얼 더>

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

Copyright© 2022 湘ICP备2022001581号-3