2012-08-22 2 views
10

가능한 중복 :
C++ using this pointer in constructors 제목처럼우리는 생성자 내부 '이'포인터를 사용할 수

, 나는 다음과 같은 코드를 같이 할 수있다?

class A; 

class B { 
public: 
    B(A* p); 
    ... 
}; 

class A { 
    B m; 
public: 
    A():m(this){} 
    ~A(){} 
}; 
+0

중복 가능성 :이 포인터를 구성원의 c'tor에 전달하거나이 포인터를 다른 스레드로 전달할 때 차이가 있습니다. 첫 번째 경우에는 건설중인 객체가 처음 액세스되는 시점을 쉽게 제어 할 수 있습니다. 두 번째는 최소한 단순하지만 모든 것이 좋습니다. –

답변

10

예, 현재 건설중인 개체에 대한 포인터를 전달할 수 있습니다. 그러나 객체가 완전히 구성되지 않았다는 것을 명심해야합니다. 그래서 기본적으로 B가 할 수있는 일은 나중에 사용할 수 있도록 포인터를 저장하는 것입니다.

자주 사용되는 예는 std :: stream 및 스트림 버퍼입니다.

관련 문제