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

Làm cách nào để xử lý các giá trị mặc định trong các lệnh gọi hàm lồng nhau (sâu)?

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

Giả sử có một hàm có giá trị mặc định:

int foo(int x=42);

Nếu điều này được gọi bởi người khác như thế này:

int bar(int x=42) { return foo(x);
int moo(int x=42) { return bar(x);

Tất nhiên đây chỉ là một ví dụ giả tạo. Tuy nhiên, đôi khi tôi cũng gặp phải những tình huống tương tự. Tham số này chỉ có sẵn ở cấp cao nhất () được chuyển xuống mức thấp nhất và chỉ ở đó nó mới thực sự được sử dụng. Điều bất lợi của việc này là khi tôi sẽ foo Thay đổi để có sự khác biệt 42 giá trị mặc định, tôi sẽ phải tìm kiếm tất cả người gọi và thay đổi giá trị mặc định cho phù hợp.

Có một số mẫu/thành ngữ để tránh điều này?

Giải pháp đơn giản duy nhất tôi nghĩ đến là

int bar() { return foo();
int bar(int x) { return foo(x);

Tuy nhiên, vì tôi hơi lười và điều này sẽ dẫn đến khá nhiều sự trùng lặp mã trong mã thực, nên tôi muốn tránh điều này.

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

Tôi khuyên bạn nên chọn một trong hai tùy chọn bên dưới (như bạn có thể thấy trong các câu trả lời khác - có nhiều giải pháp khả thi hơn).

  1. Quá tải chức năng của bạn
  2. Xác định hằng số

Vì vậy, tùy chọn 1 trông như thế này:

int foo(int x=42);
int bar(int x) { return foo(x);
int moo(int x) { return bar(x }
int bar() { return foo();
int moo() { thanh trả về();

Ngoài ra, tùy chọn 2 sẽ ngắn hơn:

constexpr int FOO_DEFAULT = 42;
int foo(int x=FOO_DEFAULT);
int bar(int x=FOO_DEFAULT) { return foo(x }
int moo(int x=FOO_DEFAULT) { return bar(x }

Đối với các trường hợp có số lượng giá trị mặc định nhỏ (ví dụ: một giá trị mặc định), tôi sẽ sử dụng tùy chọn 1 và đối với các trường hợp có khá nhiều giá trị mặc định, tôi sẽ sử dụng tùy chọn 2 - như foo(int a, int b = 3, std::string c = "wow", float pi = 3.14)

Làm cách nào để xử lý các giá trị mặc định trong các lệnh gọi hàm lồng nhau (sâu)? , 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/38460227/

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