Wie kann eine C ++ - Headerdatei eine Implementierung enthalten?

Ok, kein C/C++ Experte mit allen Mitteln, aber ich dachte den Punkt einer header-Datei war zu erklären, dass die Funktionen, dann die C/CPP-Datei zu bestimmen, die Umsetzung.

Aber die Beurteilung von einigen C++ - code heute Abend, ich fand das eine Klasse header-Datei...

public:
    UInt32 GetNumberChannels() const { return _numberChannels; } //<-- Huh??

private:
    UInt32 _numberChannels;

Warum also gibt es eine Umsetzung in einem header? Hat es zu tun mit der const keyword? Nicht, dass inline-Methode einer Klasse? Was genau ist der Vorteil/Zeitpunkt, es zu tun auf diese Weise gegen die Definition, die Implementierung in die CPP-Datei?

Kommentar zu dem Problem
Die Funktion inline. Kommentarautor: Some programmer dude
Dies ist nur eine der Möglichkeiten, um die Deklaration einer inline-Funktion in C++. Kommentarautor: Michael Burr
RE die const qualifier; es bedeutet nur, dass die Methode nicht verändern den Zustand des Objekts. Kommentarautor: Michael
@Alex: Sie sind falsch, muss der compiler die inline-Funktion. Der compiler/linker zu tun haben mit dem mehrere Definitionen (inline-Funktionen werden nicht unter die one-definition-rule). Kommentarautor: Michael Burr
@Alex Nein der compiler nicht inlien. Es kann inline in einigen übersetzungs-untis aber nicht tun müssen, so in allen TU. Ja, es gibt mehrere Definitionen, da aber die Funktion ist (implizit) inline deklariert, kann der compiler markiert das symbol, wenn es nicht inline, und der linker weiß, es zieht nur einer der exportierten Symbole. Es ist das gleiche für template-Instanziierungen. Kommentarautor: Arne Mertz

InformationsquelleAutor der Frage MarqueIV | 2013-01-25

Schreibe einen Kommentar