Eine Anfänger-Anfänger Frage
-
Hallo,
sei T ein Template. Was bedeutet dann folgendes:
T a(b);Ich verstehe noch das durch T der Typ angegeben wird, aber nach dieser Stelle wird es interessant. Ist a eine Variable vom Typ T die die Werte von b annimmt, wobei b auch vom Typ T ist?
Also eine Abkürzung für
T a = new T(b)und T besitzt einen Kopierkonstruktor?
Bin über eine kurze Antwort dankbar

Viele Grüße
MM
-
Kommt auf den Kontext an. Entweder deklarierst du eine Funktion a, die b als Parameter nimmt und ein T liefert. Oder du legst ein Objekt a vom Typ T an, dessen Konstruktor b als Parameter übergeben wird.
-
Nein. Kommt drauf an, was b ist.
Wenn b ein Typ ist, dann ist das eine Funktiondeklaration. Wenn b aber eine Variable ist, dann wird da eine Variable vom Typ T über einen ctor konstruiert. Je nachdem, ob b vom gleichen Typ ist wird der copy-ctor, oder ein gewöhnlicher aufgerufen. (sofern natürlich vorhanden).
-
Super, vielen Dank.
Viele Grüße
MM
-
MrMilk schrieb:
Hallo,
sei T ein Template. Was bedeutet dann folgendes:T a(b);Vermutlich Anlage eines Elementes des Typs T namens a, mit dem Parameter b. Wenn b vom Typ T ist, der Kopierkonstruktor.
(Anmerkung: Ich weiß das eine Funktionsdeklaration auch möglich wäre, halte es aber für den unüblicheren Fall an dieser Stelle)MrMilk schrieb:
Ist a eine Variable vom Typ T die die Werte von b annimmt, wobei b auch vom Typ T ist?
Also eine Abkürzung für
T a = new T(b)und T besitzt einen Kopierkonstruktor?
Mit Sicherheit aber nicht mit "new" (dynamische Speicherallokation), sondern als Stackvariable. T sollte hier auf jeden Fall einen Kopierkonstruktor besitzen (ob implizit oder explizit ist egal).