2012-08-22 29 views
10

thể trùng lặp:
C++ using this pointer in constructorsChúng ta có thể sử dụng 'này' con trỏ bên trong constructor

Giống như tiêu đề, tôi có thể làm điều gì đó giống như đoạn mã sau?

class A; 

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

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

Có thể trùng lặp: Có sự khác biệt khi chuyển con trỏ này đến c'tor của một thành viên hoặc chuyển con trỏ này đến một chuỗi khác. Trong trường hợp đầu tiên, người ta có thể dễ dàng kiểm soát khi đối tượng đang được xây dựng được truy cập lần đầu tiên, trong lần thứ hai, nó ít nhất là tất cả nhưng đơn giản. –

Trả lời

10

Có, bạn có thể chuyển con trỏ đến đối tượng hiện đang được xây dựng. Nhưng bạn phải ghi nhớ, rằng đối tượng không được xây dựng hoàn toàn. Vì vậy, về cơ bản những gì B có thể làm trong đó c'tor là lưu trữ con trỏ để sử dụng sau này.

Ví dụ về điều này thường được sử dụng, là luồng :: std và bộ đệm luồng.

Các vấn đề liên quan