Konstruktor mit einem Standardparameter

7

Angenommen, ich habe eine Klasse

%Vor%

warum, wenn ich

anrufe %Vor%

der contructor C(int =10) wird aufgerufen und wenn ich

rufe %Vor%

Der Standardkonstruktor wird aufgerufen? Wie vermeide ich das? Ich möchte nur meinen Konstruktor ausführen, ich habe versucht, den Standardkonstruktor privat zu machen, aber es funktioniert nicht.

    
Ruggero Turra 24.10.2010, 19:37
quelle

3 Antworten

17
  1. Tatsächlich sollte C c(); als Funktionsdeklaration analysiert werden. Um den Default-Konstruktor explizit aufzurufen, müssen Sie C c = C(); .
  2. schreiben
  3. Sobald Sie einen Konstruktor definiert haben, stellt der Compiler keinen Standardkonstruktor für Ihren Typ bereit, sodass keiner aufgerufen werden konnte.
  4. Da Ihr Konstruktor mit einem Argument aufgerufen werden kann, dient er als implizite Konvertierungsfunktion. Sie sollten in Erwägung ziehen, explicit zu verwenden, um zu verhindern, dass implizite Conversions in unerwarteten Momenten auftreten.
sbi 24.10.2010, 19:39
quelle
14

Der Code C c(); macht nicht das, was er zu tun scheint:

Er deklariert eine Funktion namens c , die keine Argumente annimmt und eine C zurückgibt. Es ist äquivalent zu

%Vor%     
Konrad Rudolph 24.10.2010 19:39
quelle
1

Dies liegt daran, dass c() als Funktion mit dem Namen c interpretiert wird. C() löst den entsprechenden Konstruktor für die C -Klasse

aus     
iGbanam 24.10.2010 20:19
quelle