Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Fungsi virtual 'simbol' harus menentukan tepat salah satu dari 'virtual', 'override', atau 'final' (c.128)
Panduan Inti C++
C.128: Fungsi virtual harus menentukan tepat salah satu virtual, penimpaan, atau final
Untuk meningkatkan keterbacaan, jenis perilaku virtual harus dinyatakan dengan jelas dan tanpa redundansi yang tidak perlu. Meskipun beberapa penentu virtual dapat digunakan secara bersamaan, lebih baik menentukan satu per satu untuk menekankan aspek terpenting dari perilaku virtual. Urutan kepentingan berikut ini jelas:
- fungsi virtual biasa;
- fungsi virtual yang secara eksplisit mengambil alih basisnya;
- fungsi virtual yang mengambil alih dasarnya dan menyediakan implementasi akhir dalam rantai warisan saat ini.
Catatan
- Aturan ini melewati destruktor karena mereka memiliki aturan khusus mengenai virtualitas.
- Peringatan muncul pada definisi fungsi, bukan deklarasi. Mungkin membingungkan, karena definisi tidak memiliki penentu virtual, tetapi peringatannya masih sesuai.
Nama analisis kode: SINGLE_VIRTUAL_SPECIFICATION
Contoh: Penentu redundan
class Ellipse : public Shape {
public:
void Draw() override {
//...
}
};
class Circle : public Ellipse {
public:
void Draw() override final { // C26435, only 'final' is necessary.
//...
}
virtual void DrawCircumference() final { // C26435, should be neither 'virtual' nor 'final'.
//...
}
};
Lihat juga
C.128: Fungsi virtual harus menentukan tepat salah satu virtual, penimpaan, atau final