2016-04-12 20 views
0

Özel bir sabit sınıf üyesine erişmek için aşağıdaki iki uygulama arasındaki farklar nelerdir?Yapı sınıfı üyesi için otomatik kesinti

// Auto& (compile ok) 
class Foo { 
    private: 
    const int _foo; 
    public: 
    Foo(const int& in) : _foo(in) {} 
    auto& foo() { return _foo; } 
} 

// Explicit type (compiler error) 
class Foo { 
    private: 
    const int _foo; 
    public: 
    Foo(const int& in) : _foo(in) {} 
    int& foo() { return _foo; } 
} 

auto ile derleyici şikayet etmiyor ama aslında açık int tür bildirimi (constness kaynaklanmaktadır) derleyici hata veriyor. Bu durumda, auto nedir?

+0

Sidenote: Ne yaptığınızı bildiğinizden emin olun w.r.t. const başvuruları kullanırken semantik. [Int vs const int &] konusuna bakın (http://stackoverflow.com/a/4705871/211160). Ve bir int geri dönmekten daha yavaş olabileceğini fark edin. – HostileFork

cevap

4

_foo'dan beri const int, auto, const int anlamına gelir. const int&'u döndürmek için 'Açık tür' kodunuzu değiştirin ve derleyici artık şikayet etmemelidir.

İlgili konular