2012-02-29 34 views
5

tôi đang làm việc trên mã của người khác tại nơi làm việc (Qt Desktop ứng dụng) và thấy điều này:Địa chỉ của con trỏ không tham chiếu?

connect(&*mpMainWin, SIGNAL(whatever()), this, SLOT(whatever()))); 

Tôi có một số khó khăn để hiểu được phần &*mpMainWin. Theo như tôi biết về con trỏ, nó trả về địa chỉ của con trỏ không được tham chiếu mpMainWin.

Nhưng mpMainWin đã giữ địa chỉ đó, vì vậy hãy đặt trực tiếp địa chỉ đó làm thông số sẽ có cùng kết quả.

Vì vậy, nếu tôi không bỏ sót bất cứ điều gì và logic của tôi là đúng, lý do làm một điều như vậy là gì? và liệu có khi nào chúng ta nên sử dụng loại cú pháp đó?

+5

Loại 'mpMainWin' có toán tử dereference bị quá tải không? –

+0

Không, tôi không tìm thấy bất kỳ quá tải nào trong tiêu đề của nó. – talnicolas

+1

Làm thế nào về các siêu lớp của nó? Bạn đã thử lấy '& *' để xem điều gì sẽ xảy ra? –

Trả lời

9

Điều này có thể được sử dụng như một mẹo để chuyển đổi một con trỏ thông minh (nghĩa là không thực sự là một con trỏ, một lớp thực hiện operator*()) vào một con trỏ đơn giản. Nếu không thấy làm thế nào mpMainWin được tuyên bố là không thể nói nếu đó là trường hợp ở đây. Nếu mpMainWin là một con trỏ đơn giản để bắt đầu thì có, &*mpMainWin giống như chỉ mpMainWin.

+0

Nó thực sự là một con trỏ thông minh. Đẹp ... – talnicolas

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