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

  • hockeywebcasts

    hockeywebcas

    31 EKİM 2012
  • My Name Is Jeff

    My Name Is J

    26 ŞUBAT 2008
  • Photoshop Pro Help

    Photoshop Pr

    1 Ocak 2007