class ClassB { private: ClassA* ptr1; // Переменные-указатели ClassA* ptr2; public: // Конструктор, инициализирующий указатели. // Если при втором вызове new произойдет исключение, // возникнет утечка ресурсов. ClassB (ClassA val1, ClassA val2) : ptr1(new ClassA(val1)), ptr2(new ClassA(val2)) { } // Копирующий конструктор. // Исключение при втором вызове new может привести к утечке ресурсов. ClassB (const ClassB& x) : ptr1(new ClassA(*x.ptr1)), ptr2(new ClassA(*x.ptr2)) { } // Оператор присваивания const ClassB& operator= (const ClassB& x) { *ptr1 = *x.ptr1; *ptr2 = *x.ptr2; return *this; } ~ClassB () { delete ptr1; delete ptr2; } ... };