<pre>//====================== start of sample.cpp ========================== class Person { public: short m_age; const char* m_name; const char* m_surname; }; class Library { public: long m_books_count; std::string m_name; static std::string m_city; }; class Program { public: std::string prog_name; long version; void* prog_data; }; class Region { public: short country_code; short city_code; std::shared_ptr<Library< main_library; };//====================== end of sample.cpp ========================== </pre> Для какого из классов в фрагменте файла sample.cpp необходима реализация своего оператора копирования?
<pre> //====================== start of sample.hpp ========================== class ARef { public: /* Сonstructory */ ARef(A& a, int i) : _a(a), _ix(i) {} /* operator= */ ARef& operator= (T t) { return *this;} private: A& _a; // Reference to A object int _ix; // index in container }; class BRef { public: BRef(B &b, int i) : _b(b), _ix(i) {} BRef& operator= (T t) { return *this;} private: B& _b; int _ix; }; /* * Class CRef имплементирует шаблон проектирования X * хранит в себе ссылку на коллекцию типа A, которая является коллекцией * объектов типа T и предоставляет к ним доступ */ class CRef { public: CRef(C &c, int i) : _c(c), _ix(i) {} CRef& operator= (T t) { return *this;} private: C& _c; /* та коллекция объектов, доступ к которой и предоставляется*/ int _ix; /* индекс текущего объекта в контейнере */ }; /* * Class DRef */ class DRef { public: // конструктор инициализирует объект DRef(D &d, int i) : m_d(d), _ix(i) {} // оператор возвращает ссылку на себя DRef& operator= (T t) { return *this;} private: D& m_d; // хранимый объект int _ix; // индекс }; //====================== end of sample.hpp ========================== </pre> Комментарии какого из классов в файле sample.hpp являются необходимыми и достаточными?