다음을 통해 공유


/vd(생성 치환 비활성화)

구문

/vdn

인수

0
vtordisp 생성자/소멸자 변위 멤버를 표시하지 않습니다. 모든 클래스 생성자와 소멸자가 가상 함수를 가상 함수를 호출한다고 확신하는 경우에만 이 옵션을 선택합니다.

1
숨겨진 vtordisp 생성자/소멸자 변위 멤버를 만들 수 있습니다. 이 선택은 기본값입니다.

2
생성되는 개체에서 dynamic_cast 연산자를 사용할 수 있습니다. 예를 들어 가상 기본 클래스에서 파생 클래스로의 dynamic_cast.

/vd2 는 가상 함수가 있는 가상 기반이 있는 경우 vtordisp 필드를 추가합니다. /vd1 로 충분해야 합니다. /vd2필요한 가장 일반적인 경우는 가상 기반의 유일한 가상 함수가 소멸자인 경우입니다.

설명

이러한 옵션은 가상 베이스를 사용하는 C++ 코드에만 적용됩니다.

Visual C++는 가상 상속이 사용되는 상황에서 C++ 생성 변위 지원을 구현합니다. 생성 변위는 가상 베이스에서 선언되고 파생 클래스에서 재정의된 가상 함수가 추가 파생 클래스를 생성하는 동안 생성자에서 호출될 때 발생하는 문제를 해결합니다.

문제는 클래스의 가상 베이스에 대한 변위와 파생 클래스에 대한 변위 간의 불일치로 인해 가상 함수가 잘못된 this 포인터를 전달할 수 있다는 것입니다. 이 솔루션은 클래스의 각 가상 베이스에 대해 vtordisp 필드라는 단일 생성 변위 조정을 제공합니다.

기본적으로 vtordisp 필드는 코드가 사용자 정의 생성자 및 소멸자를 정의하고 가상 기반의 가상 함수를 재정의할 때마다 도입됩니다.

이러한 옵션은 전체 소스 파일에 영향을 미칩니다. vtordisp를 사용하여 클래스별로 vtordisp 필드를 표시하지 않는 다음 다시 사용하도록 설정합니다.

Visual Studio 개발 환경에서 이 컴파일러 옵션을 설정하려면

  1. 프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 C++ 컴파일러 및 빌드 속성 설정을 참조하세요.

  2. 구성 속성>C/C++>명령줄 속성 페이지를 선택합니다.

  3. 추가 옵션 상자에 컴파일러 옵션을 입력합니다.

프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면

참고 항목

MSVC 컴파일러 옵션
MSVC 컴파일러 명령줄 구문