Ich habe folgenden CodeReferenz für Template-Parameter verwendet
using namespace std;
#include <iostream>
template<typename a> struct function
{
void self1(){ cout << "hello world 1111" << endl; }
};
template<typename a> struct function<a&>
{
void self2() { cout << "hello world 2222" << endl; }
};
int main()
{
function<int> a;
a.self1();
function<int&> b;
b.self2();
return 0;
}
Das Ergebnis läuft:
hellow world 1111
heloow world 2222
Möchten die Beziehung Schiff zwischen der ersten „struct-Funktion“ stellen und der zweiten „struct Funktion "
Wird die zweite als" Template-Spezialisierung "für die erste klassifiziert? (scheint nicht)
Ich kann sehen, dass die zweite basiert auf der ersten basiert. (Durch Entfernen des ersten ist es nicht kompilierbar). Aber
b.self1() is not defined.
Also irgendwie die zweite haben die Struktur zu einem neuen umdefiniert?
Ja, das ist Template-Spezialisierung. –
@GillBates Thx, mein übliches Verständnis ist, dass Template-Spezialisierung würde den Typ zu bool/int und so weiter definieren. Jetzt ist es als Referenz definiert. Ich werde mehr in das Wissen schauen. – thundium