2013-03-22 9 views
6

Proszę, weź to zapytanie jako kwestię ciekawości.Jaka jest maksymalna liczba członków, jaką klasa może mieć w C++

Po prostu chcę wiedzieć, że istnieje jakiekolwiek ograniczenie liczby członków, które klasa może mieć w C++. Mam nadzieję, że będzie jakaś maksymalna dopuszczalna liczba, ponieważ wszystko będzie skończone w języku, który jak sądzę.

+7

Prawie pewne, że zdefiniowano implementację, i zwykłe ostrzeżenie "jeśli musisz zapytać, robisz coś złego" –

+0

Nie ma ograniczenia zdefiniowanego w specyfikacji - wszystko zależy od platformy i jej kompilatora. Istnieje jednak minimum, które powinien obsługiwać każdy kompilator. Jego 16384. – Dariusz

+1

@Damien_The_Unbeliever: Pomyśl, to nie jest właściwy sposób komentowania prawdziwego pytania. Oczywiście akceptuję twój komentarz. Ale wolą odpowiedzi niż komentarze. – CodeRider

Odpowiedz

8

Ta wartość jest definiowana przez każdą implementację. Standard C++ zaleca pewne minimalne obsługiwane ilości w załączniku B:

- Członkowie danych w jednej klasie [16 384].

[...]

- bezpośrednie i pośrednie klasy bazowe [16 384].

- Bezpośrednie klasy podstawowe dla jednej klasy [1 024].

- Członkowie zadeklarowani w jednej klasie [4 096].

- Ostateczne przesłanianie funkcji wirtualnych w klasie, dostępne lub nie [16 384].

- Bezpośrednie i pośrednie wirtualne podstawy klasy [1 024].

- Statyczni członkowie klasy [1 024].

Minimalna liczba dla "członków zadeklarowanych w jednej klasie" jest mniejsza niż dla "członków danych w jednej klasie", ponieważ klasy mogą dziedziczyć elementy danych z ich baz.

+3

To powinno wystarczyć dla wszystkich. Poważnie :) – jrok

+0

Dlaczego członkowie danych w jednej klasie są 4 razy więcej niż członkowie zadeklarowani w jednej klasie? Jeśli różnica polega na tym, że "członkowie" obejmują "członków danych" i "funkcje członków", wówczas powinno być dozwolone więcej "członków" niż "członków danych". czego mi brakuje? O_O –

+0

@Armen: Wcześniej edytowałem to wyjaśnienie! Odśwież swoją przeglądarkę! –

Powiązane problemy