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

  • Marques Brownlee

    Marques Brow

    21 Mart 2008
  • Philip DeFranco

    Philip DeFra

    16 EYLÜL 2006
  • UCBerkeley

    UCBerkeley

    3 Mayıs 2006