2009-08-13 5 views
-1

Ich bin neugierig auf beide, eine h Single-und Multi-Threaded-Implementierung.Wie wird das nicht-virtuelle Interface-Muster in C++ implementiert?

Dank

+0

Ich bin neugierig zu wissen, wovon Sie sprechen - Sie müssen viel mehr Details geben, vorzugsweise mit Beispielcode. –

+1

Um Neil hinzuzufügen, bin ich nicht sicher, was Sie mit Single-vs Multi-Thread-Implementierungen meinen. NVI hat eigentlich nichts mit Threading zu tun, und so unterscheidet sich der Unterschied zwischen Single/Multithread NVI nicht wirklich von dem Unterschied zwischen den Single/Multithread-Implementierungen einer Klasse. –

+0

@Nick Der Typ scheint sich einem kleinen C++ - Spam-Fest hinzugeben. Ich bezweifle, dass er seine eigene Frage versteht. –

Antwort

3

Ihre Frage ist vage, aber es klingt wie Sie die Curiously recurring template pattern

wollen, gibt es viel bessere Menschen, als ich dies auf das erklären, Web wird es viel in der Boost-Bibliothek verwendet. Auschecken boost.iterator Dokumentation und Code für ein gutes Beispiel

2

Wenn Sie eine Kopie von Effektive C++ (3. Edition) herum sitzen haben, gibt Scott Meyers eine nette Behandlung der NVI Redewendung in Artikel 35 (Seite 170).

+0

Ja, ich habe es. Ich werde mal schauen. thx – vehomzzz

2
class base 
{ 
public: 
    void bar() 
    { 
     getReady(); 
     barImpl(); 
     cleanup(); 
    } 
    void getReady() {cout << "Getting ready. ";} 
    void cleanup() {cout << "Cleaning up.\n";} 
protected: 
    virtual void barImpl() {cout << "base::barImpl. ";} 
} 

class derived : public base 
{ 
protected: 
    virtual void barImpl() {cout << "derived::barImpl. ";} 
} 

int main() 
{ 
    base b; 
    derived d; 
    b.bar(); 
    d.bar(); 
} 

Ausgang:

Getting ready. base::barImpl. Cleaning up. 
Getting ready. derived::barImpl. Cleaning up. 
+0

Es ist immer schön mit einem Codebeispiel, aber einige Erklärung würde tun (obwohl ich sehe, was es tut). –

+0

In Ihrem Fall ist virtuell geschützt. Was ist mit privat? – vehomzzz

+0

privat ist in Ordnung, aber viele Bücher empfehlen es nicht für virtuelle Funktionen, weil die Semantik ein wenig verwirrend ist. – rlbond

Verwandte Themen