2008-10-16 19 views

cevap

30

"const sınıfı" ne anlama geliyor? Tamam derlenmiş gibi görünüyor.

Benim için değil. Derleyicinin sadece kibar olduğunu ve görmezden geldiğini düşünüyorum. G12, şikayetçiyi sessizce yoksayar, VC++ sessizce yok sayar.

Düzelt:

+3

VC++ 'nin yanlış gittiği bir kenar çantası gibi göründüğünü söyleyeceğim –

+0

Şuna benziyor; 'const', bulabileceğim hiçbir şeyi etkilemez. –

+0

VC++, gerçekten çok sayıda kötü biçimlendirilmiş kodu sindiriyor (2013'ü kullanıyorum). Sadece mutlu yollar için test ettiler. – ubik

17

Eğer olsaydı bu:

Sonra açıkça 'bir' const olduğu anlamına gelir. Aksi takdirde, büyük olasılıkla C++ olduğunu düşünüyorum.

+0

C++ iyi unutulmuş eski özellikleri! Uzun zaman önce C'de böyle şeyler yaptığımı hatırlıyorum. –

41

const o örnekteki anlamsız, ve derleyici hata verebilir olmalıdır, ancak kapanış } ve ; arasındaki bu sınıfın değişkenleri bildirmek için kullanabilirsiniz, o zaman örneğin const olarak bu örnekleri tanımlayan:

const // It is a const object... 
class nullptr_t 
{ 
    public: 
    template<class T> 
     operator T*() const // convertible to any type of null non-member pointer... 
    { return 0; } 

    template<class C, class T> 
    operator T C::*() const // or any type of null member pointer... 
    { return 0; } 

    private: 
    void operator&() const; // Can't take address of nullptr 

} nullptr = {}; 

geçici bir: bu örnekteki gibi sonradan sınıfının bir örneğini bildirmek sürece


const class A 
{ 
public: 
    int x, y; 
} anInstance = {3, 4}; 

// The above is equivalent to: 
const A anInstance = {3, 4}; 
+2

Bunu bir hata yapmak için bir gerekçe bulamıyorum. Derleyiciler, istedikleri zaman uyarı verebilirler, ancak sadece standart, hata olarak sayılanları belirler. – MSalters

+0

Çünkü bir şey olmayan bir şey olarak bildiriyorsunuz. Bu asla yapmak istemediğiniz bir şey ve bu yüzden bir hata olmalı. Standart, neyin doğru olduğunu belirlemelidir; Her yanlış şeyi tanımlamak çok fazla iş olurdu. – Bernard

+0

Standartta kullanılan terimin "yanlış biçimlendirilmiş" olduğunu düşünüyorum. Standart, neye izin verilmediğini söylemez, sadece ne olduğunu. Bu geçerli C++ sözdizimi değil, bu nedenle izin verilmiyor. – KeithB

7

Bu çok anlamsız C++ 0x için bekliyorsanızuygulama.