Was sind die Unterschiede zwischen Test t; und Test t (); wenn Test eine Klasse ist [Duplikat]

7

Ich verwende Visual Studio 2012, Angenommen, Test ist eine Klasse

%Vor%

Wenn ich eine neue Instanz von Test erstelle, was ist der Unterschied zwischen den beiden folgenden Möglichkeiten?

Weg 1

%Vor%

Weg 2

%Vor%

Ich habe diese Frage in dem Code unten, ursprünglich habe ich eine Instanz von A in Weg 2 definiert, ich habe nur einen Fehler, weil B keinen Standardkonstruktor bietet, aber wenn ich es in Weg 1 definiere, bekam ich ein zusätzlicher Fehler.

%Vor%

wenn ich ein In-Way 1 definiere

%Vor%

Ich werde einen weiteren Fehler bekommen, sagte

  

Fehler C2248: 'A :: A': kann nicht auf private Member zugreifen, die in der Klasse deklariert sind   'A'

Ich denke also, dass zwischen den beiden Möglichkeiten einige Unterschiede bestehen müssen.

    
zdd 02.10.2012, 07:43
quelle

2 Antworten

50

Test t; definiert eine Variable namens t vom Typ Test .

Test t(); deklariert eine Funktion namens t , die keine Parameter akzeptiert und ein Test zurückgibt.

    
Luchian Grigore 02.10.2012, 07:44
quelle
17
  

Was ist der Unterschied zwischen zwei Deklarationen?

%Vor%

Deklariert eine Funktion und kein Objekt. Es ist eines der meisten Ärger parsen in C ++ Er deklariert eine Funktion mit dem Namen a , die keine Parameter akzeptiert und den Typ A zurückgibt.

%Vor%

Erstellt ein Objekt mit dem Namen a vom Typ A , indem es seinen Standardkonstruktor aufruft.

  

Warum erhalten Sie den Kompilierungsfehler?

Für eine Klasse ist der Standard-Zugriffsbezeichner private . Sie erhalten den Fehler, weil Ihr Klassenkonstruktor private lautet und nicht beim Erstellen des Objekts mit der obigen Syntax aufgerufen werden kann.

    
Alok Save 02.10.2012 07:44
quelle

Tags und Links