cuốn sách gpt4 ai đã làm

c++ - liên kết các hàm với các chữ ký khác nhau

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 02:17:36 hai mươi bốn 4
mua khóa gpt4 Nike

Tôi xin lỗi nếu có ai hỏi câu hỏi này.

Tôi nghĩ bạn không thể liên kết một hàm bằng một chữ ký khác, nhưng hãy xem điều này:

void TakesChar(tham số char)
{
std::cout << tham số << std::endl;
}

sử dụng CallSig = void(float);
sử dụng CallBack = std::function;

int main()
{
Gọi lại CallBack = std::bind(&TakesChar, std::placeholders::_1);
gọi lại (1.1f);
gọi lại(2.2f);

return 0;
}

Biên dịch và chạy. Bạn có thể thử các loại tham số và số khác nhau. Ví dụ: bạn có thể sửa đổi mấtChar, làm cho nó không cần đối số nhưng vẫn sẽ biên dịch.

tại sao vậy? Có sự thật nào đằng sau điều này không? Tôi có thể buộc chữ ký khớp chính xác không?

Cảm ơn.

câu trả lời hay nhất

Trên thực tế có hai vấn đề ở đây:

  1. Tại sao chuyển đổi được phép?
  2. tại sao không ràng buộc Cung cấp thông số? , đối tượng trả về có chấp nhận bất kỳ số lượng tham số nào không?

Trước đây chỉ là một quyết địnhràng buộcHành vi: Bởi vì bạn có thể gọi MấtChar(1.1f)tại sao không được phép std::bind(&TakesChar, _1)绑定(bind)到 std::function ? Ủy ban đã quyết định cho phép nó.

Cái sau, như đã đề cập trong các ý kiến, đã được VÌ THẾ được giải quyết. .Tóm lại, nó không chỉ dễ dàng hơn mà còn cho phép ràng buộcCó nhiều toán tử() Các đối tượng có nhiều loại khác nhau.

Về c++ - các hàm liên kết có chữ ký khác nhau, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/23390125/

hai mươi bốn 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress