12.1/5 생성자는 간단하다 10.1) 및
- 그 클래스의 모든 직접베이스 클래스 사소한 생성자 및
이 - 클래스 타입 (또는 어레이 이의)로되어 그 클래스의 모든 비 정적 데이터 멤버를 들어, 이러한 각각의 클래스 가진 간단한 생성자.사용은
처음에는 사소한 생성자가 단순한 암시 적 기본 생성자라고 생각했습니다. 그러나 표준에서 위의 텍스트를 읽을 때, 사소한 생성자가 암시 적 기본 생성자 일뿐만 아니라 위에서 언급 한 다른 요구 사항을 갖고있는 것처럼 보입니다. 무슨 뜻이에요? 사소한 생성자를 갖는 점은 무엇입니까? 예를 들어
:
class X
{
// ...
};
합니까 클래스 X는 사소한 또는 암시 적 기본 생성자가?
가상 함수를 처리하기 위해 준비하는 것과 관련하여 생성자가 어떻게 작동하는지 설명 할 수 있습니까? – user1086635
@ user1086635 컴파일러는 가상 함수가있는 클래스 레이아웃에 숨겨진 포인터를 추가하여 가상 함수 테이블 (vtable이라고도 함)을 가리 킵니다. 이 포인터는 클래스를 사용할 준비가되기 전에 설정해야합니다. – dasblinkenlight
그러나 컴파일 타임에 vtable이 만들어지고 객체가 만들어지면 숨겨진 포인터가 vtable로 설정됩니다. 이 프로세스에서 생성자는 런타임에 호출되지 않고 어떻게 사용됩니까? – user1086635