Ý nghĩa của * & và ** & trong C ++

Điều này * & trong lý thuyết cũng như trong thực tế, nó có thể và được gọi là tham chiếu đến biến con trỏ. và nó hoạt động giống như vậy. Sự kết hợp * & này được sử dụng làm tham số hàm cho định nghĩa kiểu ‘truyền qua’. Không giống như ** cũng có thể được sử dụng để khai báo một biến con trỏ kép.
Việc truyền tham số được chia thành truyền theo giá trị, truyền theo tham chiếu, truyền theo con trỏ . có nhiều câu trả lời khác nhau về các loại “chuyển qua” có sẵn. tuy nhiên điều cơ bản mà chúng tôi yêu cầu để hiểu cho chủ đề này là.

truyền bằng tham chiếu -> thường hoạt động trên biến đã được tạo được tham chiếu trong khi chuyển đến hàm, ví dụ:fun(int &a);

truyền bằng con trỏ -> Hoạt động trên ‘biến con trỏ / địa chỉ biến’ đã được khởi tạo chuyển đến hàm ví dụ:fun(int* a);

auto addControl = [](SomeLabel** label, SomeControl** control) {
    *label = new SomeLabel;
    *control = new SomeControl;
    // few more operation further.
};

addControl(&m_label1,&m_control1);
addControl(&m_label2,&m_control2);
addControl(&m_label3,&m_control3);

trong ví dụ trên (đây là vấn đề thực tế mà tôi đã gặp phải) tôi đang cố gắng nhập một vài biến con trỏ từ hàm lambda và vì vậy chúng ta cần chuyển nó bằng con trỏ kép, do đó, đi kèm với tham chiếu d của con trỏ cho nó tất cả cách sử dụng bên trong lambda + đó trong khi truyền con trỏ trong hàm có con trỏ kép, bạn cần chuyển tham chiếu đến biến con trỏ.

vì vậy với cùng một tham chiếu đến biến con trỏ, * & sự kết hợp này sẽ hữu ích. theo cách dưới đây cho cùng một ví dụ mà tôi đã đề cập ở trên.

auto addControl = [](SomeLabel*& label, SomeControl*& control) {
        label = new SomeLabel;
        control = new SomeControl;
        // few more operation further.
    };

addControl(m_label1,m_control1);
addControl(m_label2,m_control2);
addControl(m_label3,m_control3);

vì vậy ở đây bạn có thể thấy rằng bạn không yêu cầu tham chiếu d cũng như chúng tôi không yêu cầu chuyển tham chiếu đến biến con trỏ khi truyền trong hàm, vì kiểu truyền hiện tại đã là tham chiếu đến con trỏ.

Hi vọng điêu nay co ich 🙂