2013-11-02 31 views
5

我在調試程序。我需要知道是否爲某些類調用了複製構造函數。由於我沒有定義複製構造函數,因此編譯器生成了它。我試圖定義它,並在那裏放了一些cout,但現在我必須手動編寫複製部分。班級很大,所以我不想這樣做。有沒有辦法檢查拷貝構造函數是否被調用,但避免寫入其成員的拷貝。我怎樣才能調用複製構造函數的默認實現?檢查是否調用複製構造函數

+1

有關檢查調用堆棧是什麼? – elyashiv

回答

7

您可以使用一個混合:

template<class D> 
struct traced 
{ 
public: 
    traced() = default; 
    traced(traced const&) { std::cout << typeid(D).name() << " copy ctor\n"; } 

protected: 
    ~traced() = default; 
}; 

然後你剛剛從類繼承,像這樣:

class my_class : public traced<my_class> 
{ 
    // usual stuff... 
};