Konstruktoren [C++11]

05/29/2014 18:55 iTrodan#1
Wie wäre es richtig bzw was davon ist besser

#1

oder
#2
05/29/2014 19:26 KingwondA#2
Ist jedem selbst überlassen.
Ich verwende die 1.
05/29/2014 19:39 Lord iRemix#3
Ich verwende das 2.
Nur, wenn du in der Klassendefinition lediglich die Prototypen der Funktionen oder des Konstruktors angibst und die Funktionsdefinitionen in einer externen Datei sind, musst du das Konstruktor:: vor den Konstruktor/die Funktion machen.

Im Grunde kann man (in dem Falle) aber beides nehmen.
05/29/2014 19:45 snow#4
Warum den Namensraum angeben wenn man sowieso schon im Namensraum ist? :confused:

In einer Klassen-Deklaration nutze ich Variante 2.
05/29/2014 20:27 -Unknow#5
The second is the best. Why call class when the instruction is the class?
05/29/2014 21:28 MrSm!th#6
Was hat das mit Cpp11 zu tun und wieso sollte man Variante 1 nutzen? Die ist absoluter Schwachsinn.
05/29/2014 21:35 iTrodan#7
Quote:
Originally Posted by MrSm!th View Post
Was hat das mit Cpp11 zu tun und wieso sollte man Variante 1 nutzen? Die ist absoluter Schwachsinn.
Der gleichen Meinung bin ich auch.
In meinem Buch steht nur, dass ich Klassenname::Klassenname verwenden soll, deshalb wollte ich nochmal eure Meinung dazu hören.
05/29/2014 23:41 MrSm!th#8
Welches Buch ist das?
05/30/2014 05:56 iTrodan#9
Quote:
Originally Posted by MrSm!th View Post
Welches Buch ist das?
C++ - Lernen und professionell anwenden: Mit Visual Studio Express 2012 für Windows Desktop auf der CD (mitp Professional)
[Only registered and activated users can see links. Click Here To Register...]
05/30/2014 10:21 Doktor.#10
Hab das selbe Buch, aber bei mir hat er nie den Namensraum der Klasse mit angegeben, wenn man bereits dort ist.
Aber wie die anderen schon sagten, dies ist nicht nötig und bringt keinerlei vorteil o.Ä.
05/30/2014 14:09 Delinquenz#11
Wenn es um C++11 geht, ist
Code:
class Konstruktor
{
public:
    Konstruktor() = default;
};
das richtige Beispiel.

Wenn ich von deinen Beispielen auswählen müsste, würde ich Variante 2 nehmen, da Variante 1 redundant ist. Egal in welchem Fall, ich würde immer strikt die Definition von der Deklaration trennen um konsistent zu bleiben.
05/30/2014 16:17 iTrodan#12
Code:
1.
Konstruktor () = default;
2.
Konstruktor () {}
Soweit ich weiß wird bei der initalisierung des Konstruktors (mit default) der Konstruktor aktiviert und automatisch aufgerufen.
05/30/2014 21:13 MrSm!th#13
Quote:
Originally Posted by Delinquenz View Post
Wenn es um C++11 geht, ist
Code:
class Konstruktor
{
public:
    Konstruktor() = default;
};
das richtige Beispiel.

Wenn ich von deinen Beispielen auswählen müsste, würde ich Variante 2 nehmen, da Variante 1 redundant ist. Egal in welchem Fall, ich würde immer strikt die Definition von der Deklaration trennen um konsistent zu bleiben.
Wieso = default?
Wäre das nicht redundant, da dieser sowieso bei Ausbleiben des entsprechenden Konstruktors generiert wird?
Die default Anweisung benötigst du doch nur, wenn du neben dem Default-Konstruktor noch einen weiteren Nicht-Default-Konstruktor möchtest.
05/30/2014 22:10 Delinquenz#14
Quote:
Wäre das nicht redundant, da dieser sowieso bei Ausbleiben des entsprechenden Konstruktors generiert wird?
Dann ist das, was ihr hier versucht, genau so redundant. Ihr definiert einfach nur den Konstruktor, der ansonsten sowieso als synthesierter Konstruktor da wäre. Ich habe eine Alternative aufgezeigt.

Quote:
Die default Anweisung benötigst du doch nur, wenn du neben dem Default-Konstruktor noch einen weiteren Nicht-Default-Konstruktor möchtest.
Oder konstante Variablen bzw. Referenzen als Member hast.
05/30/2014 22:57 iTrodan#15
Quote:
Originally Posted by Delinquenz View Post
Dann ist das, was ihr hier versucht, genau so redundant. Ihr definiert einfach nur den Konstruktor, der ansonsten sowieso als synthesierter Konstruktor da wäre. Ich habe eine Alternative aufgezeigt.


Oder konstante Variablen bzw. Referenzen als Member hast.
Gut zu wissen, dass man es auch benötigt, wenn man konstante Variablen &oder Referezen als Member hat.