#include <iostream> using namespace std; class K{ public: K() { cout << "ctor" << endl; } K(const K &k) { cout << "copy ctor" << endl; } ~K() { cout << "dtor" << endl; } }; typedef K *PK; void g(K **k) { delete *k; } void f(K &k) { K *k1, k2(k), **k3; k1 = new K(k2); k3 = new PK; *k3 = new K(*k1); g(k3); } int main() { K k; f(k); }