2015-04-03 27 views
6

Bugün, kurucunun başlangıcına yanlışlıkla const'u ekledim (kopyalama yapıştırması) ve derlendi. Bunu yalnızca Visual C++ 2008'de C++ 11 öncesi denedim. Bu sözdiziminin herhangi bir anlamı var mı? Bu Microsoft'un constexpr erken denemesi mi?Bir const kurucu olarak böyle bir şey var mı?

class foo 
{ 
public: 
    const foo(int i){} 
}; 

foo f(1); 
+0

VC++ 08'de varsa, bunun neyi etkilediğini merak ediyorum. Sadece .. göz ardı edilebilir mi? – user2864740

+0

Yapıcının gövdesinde sabit olmayan işlevleri arayabildiğim için, eğer bir etkisi varsa, yapıcıda aranan şeyi kısıtlamamaktadır. – cppguy

+1

@cppguy o kadar da şaşırtıcı değil, çünkü ctor 'foo (int i) const' olarak bildirilmiyor. Sonunda (eğer bir değişken üye değişkeni ile) VS çalışır, acaba cv-nitelikli olamaz olabilir :) – vsoftco

cevap

4

Kodunuz standart olarak uyumlu değil, böyle bir şey yok. Ancak, C++ 11 ile başlayarak, constexpr yapıcılarınız olabilir, böylece nesneniz derleme zamanında oluşturulur ve constexpr ifadelerinde kullanılabilir.

bunu kullanmıyorum rağmen, MSVS en azından ben bu sitede çeşitli sorulardan fark nedir, standart uyum açısından en iyi derleyici değildir.

İlgili konular