Fungsi Constexpr lwn. Pemalar: Bila Perlu Menggunakan Yang Mana
Apabila menghadapi fungsi yang secara konsisten mengembalikan nilai yang sama, seperti "return 5, "Seseorang mungkin tertanya-tanya mengapa ciri sedemikian wujud dalam C 11 dan jika ia harus menggantikan pengisytiharan pemalar sebaliknya.
Fungsi Pemalar lwn. Constexpr
Pertimbangkan contoh pengendalian nilai malar berikut:
#define MEANING_OF_LIFE 42 const int MeaningOfLife = 42; constexpr int MeaningOfLife() { return 42; }
Secara tradisinya, seseorang hanya akan mengisytiharkan nilai yang tetap. Walau bagaimanapun, fungsi constexpr menawarkan kelebihan tertentu.
Apabila Fungsi Constexpr Berguna
Fungsi Constexpr bernilai apabila nilai yang dikembalikan memerlukan pengiraan yang lebih kompleks, seperti:
constexpr int MeaningOfLife(int a, int b) { return a * b; } const int meaningOfLife = MeaningOfLife(6, 7);
Ini membolehkan kod yang lebih mudah dibaca sambil masih memudahkan masa penyusunan penilaian.
Pengiraan Masa Kompilasi
Fungsi Constexpr membolehkan pengiraan masa kompilasi eksplisit pemalar, seperti yang dilihat dalam:
template<typename Type> constexpr Type max(Type a, Type b) { return a < b ? b : a; }
Ini membolehkan untuk pengendalian nilai malar yang cekap.
Meningkatkan Kebolehbacaan
Untuk fungsi seperti DegreesToRadians, menggunakan fungsi constexpr meningkatkan kebolehbacaan, menjadikannya lebih jelas bahawa nilai sedang dikira pada masa penyusunan:
const float oneeighty = DegreesToRadians(180.0f);
Kesimpulan
Sementara mengisytiharkan pemalar kekal sebagai amalan yang berharga, constexpr berfungsi menawarkan kelebihan apabila bekerja dengan nilai pemalar yang lebih kompleks atau boleh dibaca. Mereka memudahkan penilaian masa kompilasi dan meningkatkan kebolehselenggaraan kod. Untuk mendapatkan maklumat lanjut tentang topik ini, rujuk http://en.cppreference.com/w/cpp/language/constexpr.
Atas ialah kandungan terperinci Fungsi atau Pemalar Constexpr: Bilakah Saya Perlu Menggunakan Yang Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!