Memahami ODR-Use dalam C
Dalam konteks templat kelas, istilah "odr-use" telah ditemui. Konsep ini memainkan peranan penting dalam memahami instantiasi fungsi ahli dalam templat kelas.
Menurut piawai C [basic.def.odr], pembolehubah atau fungsi digunakan secara odr jika ia digunakan dalam konteks yang memerlukan definisi sebenar dan bukannya pengisytiharan semata-mata. Ini termasuk kes di mana pembolehubah atau fungsi dirujuk secara langsung atau berpotensi dinilai dalam ungkapan. Walau bagaimanapun, pengecualian wujud untuk objek yang boleh mengambil bahagian dalam ungkapan malar dan yang penukaran nilai-ke-nilai digunakan serta-merta.
Untuk fungsi ahli templat kelas, takrifan menjadi lebih khusus: fungsi tidak terbeban (ahli atau sebaliknya) yang dirujuk dalam ungkapan yang berpotensi dinilai atau merupakan sebahagian daripada set calon beban berlebihan adalah digunakan secara tidak wajar melainkan ia adalah fungsi maya tulen dan namanya tidak layak secara eksplisit.
Takrifan ini mungkin menimbulkan persoalan tentang cara peraturan penggunaan ODR digunakan merentas berbilang unit kompilasi. Untuk menjelaskannya, templat kelas dibuat seketika hanya jika ia diperlukan untuk kegunaan ODR dalam sekurang-kurangnya satu unit kompilasi. Sekadar membuat instantiate templat kelas tidak membuat instantiate semua fungsi ahlinya secara automatik melainkan ia digunakan secara odr secara eksplisit.
Ringkasnya, penggunaan ODR ialah konsep yang ditakrifkan dalam standard C untuk menentukan entiti yang memerlukan definisi sebenar. Ia memainkan peranan penting dalam instantiasi templat, dengan fungsi ahli hanya digunakan jika ia digunakan secara tidak wajar dalam unit kompilasi.
Atas ialah kandungan terperinci Bilakah Fungsi Ahli Templat Kelas C ODR-Digunakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!