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

  • CNET

    CNET

    5 Mayıs 2006
  • lissaandbeauty

    lissaandbeau

    24 Aralık 2011
  • SRI International

    SRI Internat

    30 NİSAN 2008