Apakah yang dilakukan oleh Operator Anak Panah (`->`) dalam Tajuk Fungsi?

Barbara Streisand
Lepaskan: 2024-11-18 07:08:02
asal
980 orang telah melayarinya

What Does the Arrow Operator (`->`) Lakukan dalam Tajuk Fungsi? 
`) Lakukan dalam Tajuk Fungsi? " />

Operator Anak Panah (->) dalam Tajuk Fungsi

Artikel ini mengkaji pengendali anak panah (->) yang digunakan dalam tajuk fungsi, yang merupakan aspek asas sintaks C 11.

Memahami Anak Panah Operator

C 11 memperkenalkan dua sintaks yang setara untuk pengisytiharan fungsi:

  1. pengecam jenis pulangan (pengisytiharan-hujah...)
  2. pengecam automatik ( hujah-pengisytiharan...) -> return_type

Operator anak panah (->;) dalam sintaks kedua mempunyai tujuan penting Ia membolehkan jenis pemulangan fungsi disimpulkan daripada hujahnya menggunakan kata kunci decltype.

Mengapa Gunakan Jenis Pulangan Auto-Deduce?

Dalam situasi tertentu, adalah berfaedah untuk memperoleh jenis pulangan secara dinamik berdasarkan jenis argumen Sebagai contoh, pertimbangkan fungsi berikut yang mengira jumlah dua nilai:

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

Dalam kes ini, argumen decltype memberitahu pengkompil bahawa. jenis pulangan hendaklah sama dengan jenis ungkapan a b. Walau bagaimanapun, pengisytiharan ini menimbulkan ralat kerana pengkompil tidak mempunyai maklumat tentang a dan b dalam hujah decltype.

Mengatasi Ralat

Untuk menyelesaikan isu ini, anda boleh sama ada gunakan std::declval dan parameter templat untuk menentukan jenis secara manual:

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

atau gunakan sintaks pengisytiharan ganti dengan pengendali anak panah (->):

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

Pilihan terakhir adalah lebih ringkas dan menyelaraskan peraturan skop.

C 14 Penambahbaikan

Dalam C 14, sintaks berikut juga dibenarkan selagi kerana fungsi ditakrifkan sepenuhnya sebelum digunakan dan semua penyataan pulangan menyimpulkan kepada jenis yang sama:

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

Walau bagaimanapun, pengendali anak panah (->) kekal berguna untuk mengisytiharkan fungsi awam (dalam pengepala) sambil menyembunyikannya badan dalam fail sumber.

Atas ialah kandungan terperinci Apakah yang dilakukan oleh Operator Anak Panah (`->`) dalam Tajuk Fungsi?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan