Üye işlevin nesnede değişiklik yapmayacağı garantisi, işlev tanımlanırken const anahtar sözcüğü ile verilir.
C++'da bu sözcük parametre listesinde sonra gelir; D'de ise başta da olabilir:
struct BenimTür
{
// C++ söz dizimi: parametre listesinden sonraki const,
// işlevin nesneyi değiştirmeyeceği garantisini verir:
void foo() const
{
// ...
}
// Aynı şekilde, baştaki const da aynı anlama gelir:
const void bar()
{
// ...
}
}
Derslerde bunlardan ikincisini kullandığım halde ona hiç ısınamadım. Dönüş türü ile ilgili olmadığı halde dönüş türünün yanına yazılması bence kafa karıştırıyor.
Ek not: Dönüş türünün const olduğunu belirtmek için o parantez içine alınır:
class BaşkaTür
{
// ...
}
struct BenimTür
{
// ...
BaşkaTür birÜye;
// Bu ise farklıdır; döndürülen nesnenin
// değiştirilemeyeceği anlamına gelir:
const(BaşkaTür) baz()
{
// ...
return birÜye;
}
}
D.erhane'nin şu derslerini gözden geçirdim ve üye işlevlerle ilgili olan const'ları parametre listesinden sonra yazdım:
-
const ref Parametreler ve const Üye İşlevler: http://ddili.org/ders/d/const_uye_islevler.html
-
İşleç Yükleme ... ve problem çözümleri: http://ddili.org/ders/d/islec_yukleme.html
Bundan sonra da öyle yapacağım... :)
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
Permalink
Reply