Heim > Backend-Entwicklung > C++ > Kann „automatisch' private Typen in C ableiten?

Kann „automatisch' private Typen in C ableiten?

Mary-Kate Olsen
Freigeben: 2024-12-19 20:51:12
Original
110 Leute haben es durchsucht

Can `auto` Deduce Private Types in C  ?

Verwendung von „auto“ für private Typen

In C mag es kontraintuitiv erscheinen, dass man „auto“ mit privaten Typen verwenden kann, z im folgenden Code demonstriert:

class Foo {
    struct Bar { int i; };
public:
    Bar Baz() { return Bar(); }
};
Nach dem Login kopieren

Normalerweise würde man erwarten, dass versucht wird, direkt auf den privaten Typ „Bar“ zuzugreifen (z. B. Foo::Bar b = f.Baz();) würde zu einem Fehler führen. Dies ist jedoch bei Verwendung von „auto“ nicht der Fall:

int main() {
    Foo f;
    auto b = f.Baz();         // ok
    std::cout << b.i;
}
Nach dem Login kopieren

Dieses Verhalten entsteht aufgrund der Ähnlichkeit zwischen „auto“-Regeln und der Vorlagentyp-Ableitung. Ähnlich wie private Typen an Vorlagenfunktionen übergeben werden können:

template <typename T>
void fun(T t) {}

int main() {
    Foo f;
    fun(f.Baz());         // ok
}
Nach dem Login kopieren

Diese Fähigkeit ergibt sich aus der Tatsache, dass der Name eines privaten Typs zwar möglicherweise nicht zugänglich ist, der Typ selbst jedoch verwendbar bleibt. Folglich ist „auto“ in der Lage, den Typ korrekt abzuleiten und ihn der Variablen „b“ zuzuweisen, obwohl es sich um einen privaten Typ handelt.

Das obige ist der detaillierte Inhalt vonKann „automatisch' private Typen in C ableiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage