GCC 컴파일 코드에서 가상 기본 클래스가 없는 클래스의 생성자가 라이브러리에 중복되어 나타날 수 있습니다. 목록을 작성하여 이러한 행동의 이유에 대한 질문을 제기합니다. 자세히 설명하자면, Itanium C ABI는 생성자를 포함하여 C 기호에 대한 일련의 명명 규칙을 정의합니다.
이러한 생성자의 잘못된 이름을 살펴보겠습니다.
에 대한 기본 객체 생성자 보시다시피 생성자는 C1(완전 객체 생성자)으로 구분됩니다. 및 C2(기본 개체 생성자) 접미사.
이 이중성은 다형성 지원에서 비롯되지만 이 경우에는 반드시 필요한 것은 아닙니다. 완전한 개체 생성자는 가상 기본 클래스를 추가로 초기화하는 반면, 기본 개체 생성자는 데이터 멤버와 비가상 기본 클래스를 초기화합니다.
라이브러리 목록에 여러 항목이 있음에도 불구하고 이러한 중복 생성자는 "기호 __의 다중 정의" 오류가 발생하지 않습니다. 이는 ABI가 각 생성자 유형에 고유한 잘못된 이름을 제공하여 링커에서 고유한 기호로 처리되도록 하기 때문입니다.
GCC 컴파일 코드에서 생성자 기호의 이중 방출 다형성 지원과 Itanium C ABI 명명 규칙의 결과입니다. 이러한 개념을 이해하면 이러한 동작의 이유를 밝히고 다양한 정의에 대한 우려를 해결할 수 있습니다.
위 내용은 가상 기본 클래스가 없는 클래스의 생성자가 GCC 컴파일 코드에서 중복되어 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!