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).


Anmelden zum Antworten