February 06, 2010

Ü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:

Bundan sonra da öyle yapacağım... :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]