2009-09-17 6 views

Antwort

53

.h:

class Foo { 
    int x, y; 
    Foo(int a, int b=0); 
}; 

.cc:

#include "foo.h" 

Foo::Foo(int a,int b) 
    : x(a), y(b) { } 

Sie nur standardmäßig Erklärung hinzufügen, nicht Implementierung.

+0

Danke, schätzen die schnelle Antwort! – royvandewater

8

Die Header-Datei sollte die Standardparameter haben, die cpp sollte nicht.

test.h:

class Test 
{ 
public: 
    Test(int a, int b = 0); 
    int m_a, m_b; 
} 

test.cpp:

Test::Test(int a, int b) 
    : m_a(a), m_b(b) 
{ 

} 

main.cpp:

#include "test.h" 

int main(int argc, char**argv) 
{ 
    Test t1(3, 0); 
    Test t2(3); 
    //....t1 and t2 are the same.... 

    return 0; 
} 
5

Sie müssen das Standardargument setzen s in der Kopfzeile, nicht in der CPP-Datei.

8

Der Standardparameter muss in die Header-Datei geschrieben werden.

Foo(int a, int b = 0); 

In der cpp können Sie beim Definieren der Methode den Standardparameter nicht angeben. Allerdings behalte ich den voreingestellten Wert im kommentierten Code, so dass es leicht zu merken ist.

Foo::Foo(int a, int b /* = 0 */) 
+2

und ändern Sie es bei Bedarf an zwei Stellen? ;-) –

+1

99% der Zeiten, es wird sich nicht ändern. Du sprichst also von einem seltenen Anwendungsfall :-) – Naveen

+1

Meiner Meinung nach ist es zu schade, dass der C++ - Standard * nicht verlangt, dass es an beiden Orten ist und dass es das gleiche ist. Voreinstellungen für Parameter gehören genauso zur Parameter-Art wie die Parametertypen. Der Compiler sollte es überprüfen. –

Verwandte Themen