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

Tại sao tôi cần tiền tố "this" khi gọi hàm thành viên thông qua con trỏ hàm?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 08:27:52 27 4
mua khóa gpt4 Nike

Theo như tôi biết, trong C++, việc gọi một hàm thành viên khác trong một hàm thành viên của cùng một lớp không yêu cầu tiền tố "this" vì nó ẩn. Tuy nhiên, trong trường hợp cụ thể của việc sử dụng con trỏ hàm, trình biên dịch sẽ yêu cầu nó. Đoạn mã sau chỉ biên dịch chính xác nếu tôi bao gồm tiền tố "này" cho cuộc gọi qua con trỏ func -

Khi sử dụng con trỏ hàm, trình biên dịch có thể suy ra khi nó trỏ đến một hàm thành viên của cùng một lớp không?

lớpFooBar 
{
private:
int foo;

public:

FooBar()
{
foo = 100;
}

int GetDiff(thanh int)
{
trả về abs(foo - bar);
}

typedef int(FooBar::*MyFuncPtr)(int);

void FooBar::Bar()
{
MyFuncPtr f = &FooBar::GetDiff;
(cái này->*f)(10);
GetDiff(10);
}

};

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

Điều này là bắt buộc vì các con trỏ hàm thành viên (không giống như các con trỏ hàm) không bị ràng buộc và bạn có thể sử dụng chúng với các đối tượng khác nhau.

(cái này->*f)(10);
(foo.*f)(10);
// vân vân.

Giới thiệu về c++ - Tại sao tôi cần tiền tố "this" khi gọi hàm thành viên thông qua con trỏ hàm? , 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/11212454/

27 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