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

  • FlippinWindows | #1 Windows Tutorial Channel!

    FlippinWindo

    23 Mayıs 2010
  • Jason Rosolowski

    Jason Rosolo

    25 EKİM 2006
  • Majestic Casual

    Majestic Cas

    28 NİSAN 2012