#include <iostream> #include <algorithm> using namespace std; class CTest { int i; public: bool operator()(const int &a1, const int &a2) const { cout << "比較" << i << endl; return a1 < a2; } CTest(const CTest &o){ i = o.i + 1; cout << "コピーコンストラクタ" << i << endl; } CTest(){ i = 0; cout << "コンストラクタ" << i << endl; } ~CTest(){ cout << "デストラクタ" << i << endl; } }; int main() { int u[3] = {1, 2, 0}; CTest o; sort(u, u + 3, o); cout << u[0] << u[1] << u[2] << endl; return 0; } /* 結果(Visual C++ 2010 Releaseビルド) コンストラクタ0 コピーコンストラクタ1 コピーコンストラクタ2 コピーコンストラクタ3 コピーコンストラクタ4 比較4 比較4 比較4 デストラクタ4 デストラクタ3 デストラクタ2 デストラクタ1 012 デストラクタ0 */