SORU
12 Kasım 2012, PAZARTESİ


sabit vs değişken üzerinde constexpr

Aşağıdaki tanım arasında bir fark var mı?

const     double PI = 3.141592653589793;
constexpr double PI = 3.141592653589793;

Stil tercih edilen değilse, C 11?

CEVAP
12 Kasım 2012, PAZARTESİ


Bir fark olduğuna inanıyorum. Haydi onlar hakkında daha kolay konuşabiliriz, böylece onları yeniden adlandırın:

const     double PI1 = 3.141592653589793;
constexpr double PI2 = 3.141592653589793;

PI1 PI2 hem sabit, onları değiştirmek mümkün değil yani. AncaksadecePI2 bir derleme zamanı sabiti değil.olacaktırderlenmiş anda başlatıldı. PI1 derleme zamanında başlatılması ya da bir süre çalışabilir. AyrıcasadecePI2 derleme zamanı sabiti gerektiren bir bağlamda kullanılabilir. Örneğin:

constexpr double PI3 = PI1;  // error

ama:

constexpr double PI3 = PI2;  // ok

ve:

static_assert(PI1 == 3.141592653589793, "");  // error

ama:

static_assert(PI2 == 3.141592653589793, "");  // ok

Hangi kullanmalısınız? İhtiyaçlarınıza uygun hangisi kullanın. Bir derleme zamanı sabiti gerekli olduğu bağlamlarda kullanılabilecek derleme zamanı sabiti olarak var olmak ister misin? Bir hesaplama zamanında yapılması ile başlatmak için mümkün olmak ister misin? Vb.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MysteryGuitarMan

    MysteryGuita

    16 HAZİRAN 2006
  • sinumatic

    sinumatic

    19 Aralık 2006
  • TV nEW

    TV nEW

    25 AĞUSTOS 2012