Callable

0 0 0

Người đăng: Nguyễn Đặng Triều

Theo Viblo Asia

Trong C++, Callable là một khái niệm rộng chỉ bất kỳ thứ gì có thể được gọi giống như một hàm.

Dưới đây là các loại Callable phổ biến trong c++

  • Hàm thông thường (Regular function): Đây là loại Callable cơ bản nhất, được định nghĩa bằng int, void, ... theo sau là tên hàm, danh sách tham số và thân hàm. Ví dụ:
int add(int a, int b) { return a + b;}
  • Con trỏ hàm (Function pointer): lưu trữ địa chỉ bộ nhớ của một hàm. Được sử dụng để gọi hàm mà con trỏ hàm đang trỏ tới. Ví dụ:
int (*func_ptr)(int, int) = add;
int sum = func_ptr(3,5);
  • Đối tượng hàm (Function object hay Functors)
    • Đây là đối tượng của 1 lớp (class, struct) mà lớp đó định nghĩa toán tử gọi hàm operator().
    • Toán tử operator() cho phép ta gọi đối tượng của lớp đó giống như một hàm.
    • Đối tượng hàm có thể lưu trữ trạng thái (dữ liệu thành viên), điều mà hàm thông thường hay con trỏ hàm không thể làm được. Ví dụ:
struct Multiplier{ int factor; // lưu trữ dữ liệu thành viên Multiplier(int _factor) : factor(_factor) {} int operator()(int x) const { return x * factor; }
}; Multiplier mul(5); int result = mul(10);
  • Lambda Expressions (Biểu Thức Lambda)
    • Là một cách ngắn gọn để định nghĩa các đối tượng hàm ẩn danh (không tên).
    • Thường được sử dụng để truyền các đoạn mã nhỏ vào các hàm khác. Ví dụ:
auto square = [](int x) {return x * x;}
int reuslt = square(7);
  • Con trỏ đến hàm thành viên (Pointers to Member Functions)
    • Là trỏ tới một phương thức của một lớp (class).
    • Để gọi một phương thức thông qua con trỏ đến thành viên hàm, bạn cần có một đối tượng cụ thể của lớp đó. Ví dụ:
struct MyClass { int value; MyClass(int v) : value(v) {} int getValue() const { return value; }
}; int (MyClass::*get_value_ptr)() const = &MyClass::getValue;
MyClass obj(42);
int val = (obj.*get_value_ptr)(); // Gọi phương thức thông qua con trỏ đến thành viên hàm

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học lập trình game cần những gì?

Lập trình game là làm gì. Các ngôn ngữ các bạn có thể sử dụng để lập trình game : C, C++, C#, Java, Python,... Các bước cơ bản để lập trình game. . Hiển thị: Đã là game thì hiển thị không thể thiếu, lúc đầu các bạn chỉ làm cho phần hiển thị thật đơn giản, các bạn đừng quá chú tâm vào việc làm sao ch

0 0 44

- vừa được xem lúc

[MFC] Http request with winsock2.h

Giới thiệu. Xin chào, trong bài này mình sẽ giới thiệu 1 số lưu ý khi sử dụng thư viện winsock2.h (thư viện window socket) sử dụng trong window app. Đầu tiên, bạn sẽ dễ dàng search được 1 ví dụ cụ thể trên document của winsock2.

0 0 35

- vừa được xem lúc

Design parttern

Builder. 1. Ý tưởng. Builder là một mẫu thiết kế sáng tạo cho phép bạn xây dựng các đối tượng phức tạp theo từng bước.

0 0 32

- vừa được xem lúc

Kỹ thuật viết mã nguồn hiệu quả

Kỹ thuật viết mã nguồn hiệu quả? Hôm nay bài viết này mình không đề cập tới thuật toán, hãy coi như rằng chúng ta đã có thuật toán tốt nhất có thể và bây giờ chúng ta phải làm gì để có thể tăng tính hiệu quả của code. Bài viết này mình sẽ lấy ngôn ngữ lập trình C/C++ để minh họa về các hàm, các thao

0 0 38

- vừa được xem lúc

Singleton Design pattern

Singleton Design pattern. 1. Vấn đề. - Ý tưởng:.

0 0 35

- vừa được xem lúc

So sánh Python và C++

Cuộc tranh luận giữa Python và C ++ là một chủ đề hấp dẫn vì cả hai ngôn ngữ lập trình đều rất khác nhau về cú pháp, tính đơn giản, cách sử dụng và cách tiếp cận tổng thể để lập trình. Vì vậy, mọi người cảm thấy khó khăn khi lựa chọn ngôn ngữ lập trình nào để học.

0 0 40