아마도 나는 아무것도 걱정하지 않습니다. RAII 관용구를 밀접하게 따르는 데이터 멤버가 필요합니다. 추상 기본 클래스의 보호 된 포인터 멤버를 null로 초기화하려면 어떻게해야합니까?추상 기본 클래스의 보호 된 멤버를 어떻게 초기화합니까?
나는 그것이 null이되어야한다는 것을 알고 있지만 그것이 보편적으로 이해되도록하는 것이 더 좋지 않겠는가?
초기화 코드를 초기화 프로그램 목록에 넣지 않으면 실행되지 않을 수 있습니다. 이 포인터를 스택에 할당하는 어셈블리 연산을 생각하면 멀티 스레딩 환경에서와 같이 (c'tor 본문처럼) 중단되거나 스택 확장이 원자 적으로 보장 될 수 있습니까? 소멸자가 실행되도록 보장된다면 프로세서가 원자 적으로 수행하지 않더라도 스택 확장은 그러한 보장을 보장하지 않을 수 있습니까?
어떻게 그런 간단한 질문이 그렇게 광범위하게 되었습니까? 감사.
std :: library를 피할 수 있다면 나는 아주 작은 환경에 있습니다.
이상하게 생각하면, lol ++ – John
너무 많은'if (p) delete p;'마법사가 아마도 코드를 생성 했나요? – John
@ 존 : 좀 더 사소한 예제를 추가했습니다. 'delete'는베이스 소멸자에서'Base :: ~ Base() {delete p; }'. (사실,'if '라고 말하지 마십시오.) –