Rumah > pembangunan bahagian belakang > C++ > Apakah yang dilakukan oleh Operator Anak Panah (`->`) dalam Tajuk Fungsi?

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

Barbara Streisand
Lepaskan: 2024-11-18 07:08:02
asal
1102 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!

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