Junior
C++'ta override (geçersiz kılma) nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Aşırı yükleme (override), nesne yönelimli programlamada, temel sınıfta ilan edilen sanal fonksiyon'un kendi özgü uygulamasını sağlayan türetilmiş sınıfın kullandığı bir mekanizmadır. Böyle bir fonksiyon, temel sınıfa işaretçi veya referans aracılığıyla çağrıldığında, gerçek nesne türünün (türemiş veya temel) uygulaması çalıştırılır; bu, fonksiyonun aşırı yüklenip yüklenmediğine bağlıdır.
Ana noktalar:
- Sadece sanal fonksiyonlara uygulanır.
- Türemiş sınıfta aşırı yüklenen fonksiyonun imzası (isim, dönüş tipi, parametrelerin türleri ve sayısı), temel sınıftaki aşırı yüklenen fonksiyonun imzasıyla tam olarak eşleşmelidir.
overrideanahtar kelimesi (C++11'den itibaren), bir fonksiyonun açıkça aşırı yüklenmek istediğini belirtmek için kullanılır. Derleyici, temel sınıftaki fonksiyonun gerçekten bu imzayla var olup olmadığını kontrol eder ve yoksa hata verir. Bu, yazım hatalarını önlemeye yardımcı olur ve kodu daha okunabilir kılar.
Örnek:
class Base {
public:
virtual void print() {
// Temel sınıfın uygulaması
// ...
}
virtual void display(int x) const {
// Başka bir sanal fonksiyon
// ...
}
};
class Derived : public Base {
public:
// Base'ten print fonksiyonunu aşırı yükleme
void print() override {
// Derived için özgü uygulama
// ...
}
// Bu, const olmadığı için aşırı yükleme değildir
/*
void display(int x) {
// override anahtar kelimesiyle derleme hatası
// ...
}
*/
// Base'ten display fonksiyonunun doğru aşırı yüklemesi
void display(int x) const override {
// Derived için özgü uygulama
// ...
}
};