<pre>//====================== start of sample.cpp ========================== #include <stdio.h> class Region; class Person { public: short m_age; const char* m_name; const char* m_surname; const char* m_region_name; Person(const char* name) : m_name(name) {} operator short () {return m_age;} operator const char* () {return "";} }; class Region { public: const char* region_name; const char* cheef_name; long size; Region(const char* region_nm = "") : region_name(region_nm) {} operator long () {return size;} operator const char* () {return region_name;} }; int main() { Person p1("Vasily Ivanov"); Region r; printf("Region number %u, driver %s", static_cast<unsigned short>(r), static_cast<const char*>(p1)); return 0; }//====================== end of sample.cpp ========================== </pre> Какие из имеющихся в файле sample.cpp конструкторов и операторов преобразования задействованы в операциях в функции main()?
<pre>//====================== start of sample.cpp ========================== #include <vector> class Person { public: short m_age; const char* m_name; const char* m_surname; const char* m_region_name; }; class Region { public: const char* region_name; const char* cheef_name; long size; }; int main() { std::vector<unsigned char>* mybuffer = new std::vector<unsigned char>(sizeof(Person) + sizeof(Region), 0); Person* my_person = new (&(mybuffer->at(0))) Person(); my_person->~Person(); delete my_person; Region* p_region = new (&(mybuffer->at(0))) Region(); p_region->~Region(); delete p_region; delete mybuffer; return 0; }//====================== end of sample.cpp ========================== </pre> Какие операции освобождений ресурсов в файле sample.cpp являются лишними или ошибочными?
<pre>//====================== start of sample.cpp ========================== #include <vector> class Person { short m_age; const char* m_name; const char* m_surname; public: Person(short age, const char* name, const char* subname) : m_age(age), m_name(name), m_surname(subname){} Person() : m_name("unknown"){} }; class Reader: public Person { long m_ticket_number; public: Reader(long tick_numb = 0) : Person() , m_ticket_number(tick_numb) {} Reader(short age, const char* name, const char* surname, long tick_numb) : Person(age, name, surname) , m_ticket_number(tick_numb){} }; int main() { Reader reader1; Reader reader2 = 35; Reader reaedr3(22, "Vasily", "Ivanov", 123456); return 0; }//====================== end of sample.cpp ========================== </pre> Значения каких атрибутов каких объектов корректно инициализируются не нулевыми значениями?
<pre> //====================== start of sample.cpp ========================== class User { public: struct Region { short country_code; short city_code; static char* city_name; }; const char* name; int age; double balance; Region region; const char* get_name() const { return (*this).name; } int get_age() const { return this->age; } double get_balance() const { return (*this)->balance; } short get_country_code() const { return Region::country_code; } short get_city_code() const { return region.city_code; } const char* get_city_name() const { return Region::city_name; } }; //====================== end of sample.cpp ========================== </pre> В каких методах обращения к членам объекта класса user типа User корректны?
<pre>//====================== start of sample.cpp ========================== class Person { short m_age; char* m_name; char* m_subname; public: Person(short age, char* name, char* subname) : m_age(age), m_name(name), m_subname(subname){} }; class Library { public: long m_books_count; const char* m_name; const char* m_city; }; int main() { Library my_lib = {1240, "Main", "DefaultCity"}; Library *p_lib = new Library; Library empty_lib; Person any_person(25, "Djon","S"); Person *pother_person = new Person; return 0; }//====================== end of sample.cpp ========================== </pre> Инициализация каких объектов в файле sample.cpp выполняется корректно конструктором по умолчанию?
<pre>//====================== start of sample.cpp ========================== struct Book { short year; char* author; char* name; }; class Person { short m_age; const char* m_name; const char* m_subname; public: Person(short age, const char* name, const char* subname) : m_age(age), m_name(name), m_subname(subname){} }; class Library { public: long m_books_count; char* m_name; char* m_city; Library(long books_count): m_books_count(books_count){} }; int main() { Book book1 = {"Owrell", 1984, "1984"}; Book book2 = {1984}; Person main_author = {65, "Bjarne", "Stroustrup"}; Person my_author(65, "Bjarne", "Stroustrup"); Library my_lib = 25; return 0; }//====================== end of sample.cpp ========================== </pre> Инициализация каких объектов в файле sample.cpp выполнена корректно?
<pre> //====================== start of sample.cpp ========================== class Region { short country_code; short city_code; char* city_name; public: Region(); short get_country_code() { return country_code; } inline short get_city_code() const; const char* get_city_name() const; }; Region::Region() : country_code(0) , city_code(0) , city_name(0) {} inline short Region::get_city_code() const { return city_code; } const char* Region::get_city_name() const { return city_name; } //====================== end of sample.cpp ========================== </pre> Какие из методов являются встроенными и объявлены корректно?
<pre> //====================== ========================== class A { int _i; char* _name; public: A(); A(const A& a); ~A(); A& operator=(const A& a); bool operator==(const A& a) const; const char* getName() const; }; class B { public: B(int i, const char* name); ~B(); bool operator==(const B& b) const; const char* getName() const; int getIndex() const; private: int _i; char* _name; }; class C { public: C(); C(C c); C(int i, const char* name); ~C(); C& operator=(C c); const char* getName() const; int getIndex() const; int setIndex(); private: int _i; char* _name; }; class D { public: D(); D(const D& d); ~D(); D& operator=(const C& d); int _i; char* _name; }; //====================== ========================== </pre> Код какого из приведённых в фрагменте кода классов соответствуют сложившимся эмпирическим правилам организации исходного кода на С++ и канонической форме класса?
<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.cpp ========================== #include <iostream> class Program; class ProgDataGetter { public: const char* prog_name(const Program& prg); long get_version(const Program& prg); }; class Program { long threads_count; double time_of_work; class Module { char* module_name; }; char* prog_name; long version; Module modules[16]; friend std::iostream& operator >> (std::iostream& io, Program& prg); friend std::iostream& operator << (std::iostream& io, const Program& prg); friend class VersionGetter; friend const char* ProgDataGetter::prog_name(const Program&); }; std::iostream& operator >> (std::iostream& io, Program& prg) { io >> prg.prog_name >> prg.threads_count; } std::iostream& operator << (std::iostream& io, const Program& prg) { io << prg.prog_name << prg.modules[0].module_name << prg.modules[1].module_name; } class VersionGetter { public: long get_version(Program& prg) { return prg.version; } }; const char* ProgDataGetter::prog_name(const Program& prg) { return prg.prog_name; } long ProgDataGetter::get_version(const Program& prg) { return prg.version;} //====================== end of sample.cpp ========================== </pre> Для каких функций и методов корректно организован доступ к членам класса Program файле sample.cpp?