Im bereitgestellten C-Code gibt die Template-Funktion cal_size die Größe eines Array-Referenzarguments aus. Es ist faszinierend, wie der Vorlagenparameter N automatisch die Länge des übergebenen Arrays widerspiegelt.
N ist keine initialisierte Variable; Es ist eine Konstante zur Kompilierungszeit. Durch einen als Vorlagenargumentabzug bekannten Prozess werden sowohl T als auch N aus dem an die Vorlagenfunktion übergebenen Argument abgeleitet.
Betrachten Sie die folgenden Aufrufe von cal_size:
void cal_size_int_6(int (&a)[6]) { std::cout << "size of array is: " << 6 << std::endl; }
void cal_size_int_1(int (&a)[1]) { std::cout << "size of array is: " << 1 << std::endl; }
Im Wesentlichen wird die cal_size-Vorlage in einzelne spezialisierte Funktionen mit fester Codierung übersetzt Werte von N und T. Die Hauptfunktion wird äquivalent zu:
int main() { cal_size_int_6(a); cal_size_int_1(b); }
Zusammenfassend ermöglicht die Vorlagenargumentableitung Vorlagen, die Arraygröße aus dem Argumenttyp abzuleiten. Der zugrunde liegende Mechanismus beinhaltet die Generierung spezialisierter Funktionen für jede einzigartige Kombination von Argumenttypen, jeder mit seinen eigenen statisch bestimmten N- und T-Werten.
Das obige ist der detaillierte Inhalt vonWie bestimmt die Ableitung von Vorlagenargumenten die Array-Größen in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!