Rumah > pembangunan bahagian belakang > C++ > Bilakah Anda Harus Menggunakan Operator Anak Panah dalam Pengepala Fungsi C?

Bilakah Anda Harus Menggunakan Operator Anak Panah dalam Pengepala Fungsi C?

DDD
Lepaskan: 2024-11-13 05:43:02
asal
722 orang telah melayarinya

When Should You Use the Arrow Operator in C   Function Headers?

Operator Anak Panah dalam Pengepala Fungsi

Dalam C 11 dan kemudian, dua sintaks wujud untuk pengisytiharan fungsi:

Tradisional Sintaks:

return-type identifier(argument-declarations...)
Salin selepas log masuk

Sintaksis Moden:

auto identifier(argument-declarations...) -> return_type
Salin selepas log masuk

Kedua-dua sintaks adalah setara. Walau bagaimanapun, sintaks moden menyediakan cara yang mudah untuk menyimpulkan jenis pulangan daripada jenis hujah. Ini amat berguna apabila menggunakan penentu decltype, yang membolehkan anda menerangkan jenis ungkapan.

Dalam versi C sebelumnya, anda akan menulis:

template <typename T1, typename T2>
decltype(a + b) compose(T1 a, T2 b);
Salin selepas log masuk

Walau bagaimanapun, pengkompil akan tidak tahu apa itu a dan b apabila cuba menentukan jenis pemulangan.

Untuk menyelesaikan masalah ini, anda boleh menggunakan declval:

template <typename T1, typename T2>
decltype(std::declval<T1>() + std::declval<T2>())
compose(T1 a, T2 b);
Salin selepas log masuk

Walau bagaimanapun, ini menjadi verbose. Sebaliknya, sintaks moden membolehkan anda menulis:

template <typename T1, typename T2>
auto compose(T1 a, T2 b) -> decltype(a + b);
Salin selepas log masuk

Sintaks ini lebih ringkas dan mengekalkan peraturan skop yang sama.

Kemas Kini C 14:

C 14 membenarkan penggunaan sintaks berikut:

auto identifier(argument-declarations...)
Salin selepas log masuk

sebagai selagi fungsi ditakrifkan sepenuhnya sebelum digunakan dan semua penyataan kembali menyimpulkan jenis yang sama.

Kes Penggunaan:

Sintaks pengendali anak panah (->) kekal berguna untuk fungsi awam yang diisytiharkan dalam fail pengepala di mana anda ingin menyembunyikan pelaksanaan dalam fail sumber. Ini amat relevan untuk fungsi templat atau jenis konkrit khusus yang diperoleh melalui pengaturcaraan meta templat.

Atas ialah kandungan terperinci Bilakah Anda Harus Menggunakan Operator Anak Panah dalam Pengepala Fungsi C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan