5
我在調試程序。我需要知道是否爲某些類調用了複製構造函數。由於我沒有定義複製構造函數,因此編譯器生成了它。我試圖定義它,並在那裏放了一些cout
,但現在我必須手動編寫複製部分。班級很大,所以我不想這樣做。有沒有辦法檢查拷貝構造函數是否被調用,但避免寫入其成員的拷貝。我怎樣才能調用複製構造函數的默認實現?檢查是否調用複製構造函數
我在調試程序。我需要知道是否爲某些類調用了複製構造函數。由於我沒有定義複製構造函數,因此編譯器生成了它。我試圖定義它,並在那裏放了一些cout
,但現在我必須手動編寫複製部分。班級很大,所以我不想這樣做。有沒有辦法檢查拷貝構造函數是否被調用,但避免寫入其成員的拷貝。我怎樣才能調用複製構造函數的默認實現?檢查是否調用複製構造函數
您可以使用一個混合:
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...
};
有關檢查調用堆棧是什麼? – elyashiv