Tôi đã đọc về các con trỏ hàm và sử dụng chúng làm tham số cho các hàm khác. Câu hỏi của tôi là làm thế nào bạn sẽ vượt qua một chức năng bằng cách tham khảo mà không cần sử dụng con trỏ? Tôi đã cố gắng tìm câu trả lời trên Internet nhưng tôi không tìm được câu trả lời hay. Tôi biết rằng bạn có thể chuyển các biến theo tham chiếu như sau: void funct(int& anInt);
. Làm thế nào bạn sẽ làm một cái gì đó tương tự như thế này, nhưng thay vì một tham chiếu đến một biến một tham chiếu đến một chức năng là tham số? Ngoài ra, bạn sẽ sử dụng tham chiếu đến hàm trong một hàm chức năng như thế nào?C++: Làm thế nào để chuyển tham chiếu đến hàm thành một hàm khác?
Trả lời
#include <iostream>
using namespace std;
void doCall(void (&f)(int))
{
f(42);
}
void foo(int x)
{
cout << "The answer might be " << x << "." << endl;
}
int main()
{
doCall(foo);
}
Cheers & hth,
Chỉ vì tò mò, tại sao tôi muốn sử dụng một tham chiếu đến một hàm thay vì một con trỏ trỏ đến một hàm? – fredoverflow
@FredOverflow: Bởi vì một con trỏ có thể là null hoặc không hợp lệ. Một tham chiếu đảm bảo rằng nó hợp lệ và không null (không có tham chiếu null), hoặc nếu không có lỗi trong chương trình. –
@Alf P. Steinbach: "Nếu không có lỗi trong chương trình" Nghe có vẻ tuyệt vời về mặt lý thuyết nhưng nếu bạn có một cái gì đó như 'sometype & ref = * ptr;' địa chỉ trong con trỏ sẽ được sao chép vào địa chỉ trong tham chiếu, có thể không hợp lệ hoặc không hợp lệ. Bạn có thể nói rằng câu lệnh trên là hành vi không xác định khi 'ptr' không hợp lệ hoặc không có giá trị, nhưng sẽ không có bất kỳ dấu hiệu nào về thời gian biên dịch hoặc thời gian chạy, do đó, nó vẫn là lập trình viên để đảm bảo nó là hợp lệ và không null, giống như khi bạn sử dụng một con trỏ. Vì vậy, tôi nói không có bất kỳ sự khác biệt nào đối với lập trình viên. – newacct
- 1. tham chiếu mảng php chuyển đến hàm
- 2. c + + chuyển bản đồ bằng cách tham chiếu đến hàm
- 3. Làm cách nào để chuyển thành công tham chiếu hàm tới hàm reverse() của Django?
- 4. undefined tham chiếu đến một hàm tĩnh
- 5. ctypes và chuyển qua tham chiếu đến hàm
- 6. Tham chiếu đến hàm Lua trong C/C++
- 7. Đi qua tham chiếu đến một hàm tạo
- 8. Làm thế nào để bạn chuyển một tham chiếu Queue đến một hàm được quản lý bởi pool.map_async()?
- 9. Scala: trả về tham chiếu đến hàm
- 10. Không thể chuyển kết quả của hàm thành tham chiếu
- 11. C++ có hỗ trợ tham chiếu hàm thành viên không?
- 12. Chuyển con trỏ/tham chiếu đến cấu trúc thành các hàm
- 13. pydev: tìm tất cả các tham chiếu đến hàm
- 14. Lỗi "Tham chiếu đến hàm" không được xác định
- 15. py.test: Chuyển một tham số đến hàm cố định
- 16. Làm cách nào để xác định hàm trong một hàm trong Clojure và tham chiếu hàm đó?
- 17. Làm thế nào để tham chiếu một hàm từ bên trong thực thi của chính nó?
- 18. Chuyển các tham chiếu đến một hàm dựng C++ và lưu chúng vào các loại tham chiếu hoặc không tham chiếu
- 19. Chuyển unique_ptr đến các hàm
- 20. Làm thế nào để truyền một mảng hai chiều đến một hàm trong C++
- 21. Làm thế nào để nói một hàm lambda để chụp một bản sao thay vì một tham chiếu trong C#?
- 22. Trong Perl, làm cách nào để chuyển một hàm làm đối số của một hàm khác?
- 23. Làm thế nào tôi có thể chuyển một sự kiện đến một hàm trong C#?
- 24. Làm thế nào để "bỏ" một hàm hai đối số thành một hàm đối số?
- 25. Làm thế nào để tạo ra một hàm chuyển đổi một số thành Hexavigesimal tính từ?
- 26. Làm cách nào để tham chiếu đến phần tử dom gọi trong hàm thành công jquery ajax?
- 27. openpyxl tạo hàm tham chiếu ô trong trang tính khác
- 28. Làm thế nào để chuyển một biến chuỗi thành một hàm mong đợi một PChar?
- 29. Làm thế nào để thêm một tham chiếu đến System.Numerics.dll
- 30. Truyền đối số variadic trong một hàm đến một hàm khác trong D
Lưu ý:. Bạn không thể vượt qua chức năng này. Bạn chỉ có thể chuyển các tham chiếu hoặc con trỏ tới các hàm. –