Rumah > pembangunan bahagian belakang > C++ > Patutkah Anda Menggunakan Kata Kunci `sebaris` dengan Templat C?

Patutkah Anda Menggunakan Kata Kunci `sebaris` dengan Templat C?

Linda Hamilton
Lepaskan: 2024-12-28 13:39:10
asal
755 orang telah melayarinya

Should You Use the `inline` Keyword with C   Templates?

Kata Kunci Sebaris dengan Templat

Apabila mempertimbangkan penggunaan kata kunci sebaris dengan templat, persoalan timbul sama ada ia berlebihan, memandangkan pengkompil keupayaan untuk menentukan faedah inlining.

Jawapannya: Tidak, Ia Bukan Irrelevsemut

Walaupun pengetahuan pengkompil, kata kunci sebaris kekal relevan untuk templat. Walaupun templat fungsi secara amnya tidak sebaris secara lalai, pengkhususan eksplisitnya boleh menjadikannya sebaris.

Kes Tertentu

Terdapat keadaan apabila mengabaikan kata kunci sebaris boleh membawa kepada isu . Pertimbangkan contoh berikut:

#include "tpl.h"
Salin selepas log masuk
Salin selepas log masuk
#include "tpl.h"
Salin selepas log masuk
Salin selepas log masuk
#ifndef TPL_H
#define TPL_H
template<class T> void f(T) {}
template<class T> inline T g(T) {}

template<> inline void f<>(int) {} // OK: inline
template<> int g<>(int) {} // error: not inline
#endif
Salin selepas log masuk

Menyusun kod ini mengakibatkan ralat berbilang definisi kerana g<> tidak ditanda secara eksplisit sebagai sebaris.

Peraturan Ibu Jari

Untuk mengekalkan konsistensi dan mengelakkan kemungkinan ralat, pertimbangkan untuk menggunakan kata kunci sebaris untuk templat fungsi yang bertujuan untuk sebaris . Ini selaras dengan peraturan praktikal yang dicadangkan dalam "Templat C: The Complete Guide" Vandevoorde/Josuttis, yang mencadangkan menulis sebaris apabila ia benar-benar dikehendaki.

Atas ialah kandungan terperinci Patutkah Anda Menggunakan Kata Kunci `sebaris` dengan Templat 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan