Register for your free account! | Forgot your password?

Go Back   elitepvpers › Coders Den › C/C++
You last visited: Today at 13:57

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Konstruktoren [C++11]

Discussion on Konstruktoren [C++11] within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: May 2014
Posts: 18
Received Thanks: 0
Konstruktoren [C++11]

Wie wäre es richtig bzw was davon ist besser

#1

oder
#2
iTrodan is offline  
Old   #2
 
KingwondA's Avatar
 
elite*gold: 312
Join Date: May 2013
Posts: 458
Received Thanks: 47
Ist jedem selbst überlassen.
Ich verwende die 1.
KingwondA is offline  
Old   #3

 
elite*gold: 0
Join Date: Mar 2013
Posts: 2,449
Received Thanks: 6,447
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.
Lord iRemix is offline  
Old   #4

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,478
Received Thanks: 3,318
Warum den Namensraum angeben wenn man sowieso schon im Namensraum ist?

In einer Klassen-Deklaration nutze ich Variante 2.
snow is offline  
Thanks
3 Users
Old   #5
 
elite*gold: 0
Join Date: May 2014
Posts: 15
Received Thanks: 0
The second is the best. Why call class when the instruction is the class?
-Unknow is offline  
Old   #6


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,908
Received Thanks: 25,415
Was hat das mit Cpp11 zu tun und wieso sollte man Variante 1 nutzen? Die ist absoluter Schwachsinn.
MrSm!th is offline  
Old   #7
 
elite*gold: 0
Join Date: May 2014
Posts: 18
Received Thanks: 0
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.
iTrodan is offline  
Old   #8


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,908
Received Thanks: 25,415
Welches Buch ist das?
MrSm!th is offline  
Thanks
1 User
Old   #9
 
elite*gold: 0
Join Date: May 2014
Posts: 18
Received Thanks: 0
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)
iTrodan is offline  
Old   #10
 
Doktor.'s Avatar
 
elite*gold: 0
Join Date: Aug 2011
Posts: 1,190
Received Thanks: 549
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.Ä.
Doktor. is offline  
Thanks
1 User
Old   #11

 
Delinquenz's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 1,160
Received Thanks: 232
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.
Delinquenz is offline  
Old   #12
 
elite*gold: 0
Join Date: May 2014
Posts: 18
Received Thanks: 0
Code:
1.
Konstruktor () = default;
2.
Konstruktor () {}
Soweit ich weiß wird bei der initalisierung des Konstruktors (mit default) der Konstruktor aktiviert und automatisch aufgerufen.
iTrodan is offline  
Old   #13


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,908
Received Thanks: 25,415
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.
MrSm!th is offline  
Thanks
1 User
Old   #14

 
Delinquenz's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 1,160
Received Thanks: 232
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.
Delinquenz is offline  
Thanks
2 Users
Old   #15
 
elite*gold: 0
Join Date: May 2014
Posts: 18
Received Thanks: 0
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.
iTrodan is offline  
Reply


Similar Threads Similar Threads
[C++] Delegation von Konstruktoren
05/24/2014 - C/C++ - 25 Replies
Wie kann man einen Konstruktor innerhalb eines Konstruktors aufrufen? Dieser Code hier funktioniert nicht wirklich class Bruch { public:
Highscore.de Aufgabe Konstruktoren und Destruktoren Problem
09/19/2010 - C/C++ - 5 Replies
Hey! Ich versuche Fortschritte im Programmieren zu machen doc man stoßt ja immer wieder auf Probleme ;) Folgendes. Ich versuche die Aufgabe ganz unten auf der Seite(Hier) zu lösen, doch schaffe die Zweite Aufgabe nicht. Mein momentaner Code: Die C++ Datei #include <iostream>



All times are GMT +2. The time now is 13:58.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.