<pre> //====================== start of sample.cpp ========================== struct A {}; struct B {}; struct C {}; struct D {}; struct E {}; struct F {}; void foo(int i) try { switch(i) { case 1: throw A(); case 2: throw B(); case 4: throw D(); default: throw F(); } } catch(A&) { } catch(B&) { throw D(); } catch(D&) { throw C(); } catch(...) { throw; } int main(int argc, char* argv[]) { try { foo(argc); } catch(const A& a) {} catch(const B*) {} catch(C c) {} catch(E* e) {} catch(...) { return 5; } return 0; } //====================== end of sample.cpp ========================== </pre> При каких значении argc программа вернёт значение 5?
<pre> //====================== start of sample.cpp ========================== struct A {}; struct B {}; struct C {}; struct D {}; struct E {}; struct F {}; int main() { try { foo(); } catch(const A& a) {} catch(static const B*) {} catch(C c) {} catch(volatile D* d) {} catch(virtual E* e) {} catch(F*&) {} catch(...) { return 5; } return 0; } //====================== end of sample.cpp ========================== </pre> Обработчики исключений какого типа записаны неправильно?
<pre> //====================== start of sample.cpp ========================== struct A {}; struct B {}; struct C {}; struct D {}; struct E {}; struct F {}; class BaseIO { public: virtual int state() throw(A) = 0; virtual void read() throw(A, B) = 0; virtual void write() throw (C, D) = 0; virtual void open() throw (E,F) = 0; virtual void close() throw() = 0; }; class DiskIO: public BaseIO { public: virtual int state() throw(); virtual void read() throw (A, B); virtual void write() throw (C); virtual void open() throw (A, E); virtual void close() throw (F); }; //====================== end of sample.cpp ========================== </pre> Перегрузка каких виртуальных методов базового класса в классе DiskIO выполнена корректно?
<pre>//====================== start of sample.cpp ========================== int main() { Reader readers1[] = {"", ""}; std::vector<Reader> readers2; Reader reaedr3 = {(22, "Vasily", "Ivanov", 123456), (45, "Alex", "V", 993421) }; return 0; }//====================== end of sample.cpp ========================== </pre> Какие конструкторы должны быть определены для типа Reader, что бы инициализации массивов объектов этого типа и объявления контейнеров, приведённые в файле sample.cpp были успешными?
<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 <boost/shared_ptr.hpp> #include <boost/scoped_ptr.hpp> #include <boost/weak_ptr.hpp> #include <vector> struct A { virtual ~A(); }; struct B: public A {}; struct C {}; void foo1(boost::shared_ptr<A> a); void foo2(boost::weak_ptr<B>& a); void foo3(boost::shared_ptr<C> a); void foo4(boost::scoped_ptr<A>& a); void foo5(std::vector< boost::weak_ptr<C> >& c); int main(int argc, char* argv[]) { boost::shared_ptr<A> a(new A); boost::shared_ptr<B> b(new B); boost::shared_ptr<C> c(new C); boost::weak_ptr<A> b1(a); boost::weak_ptr<B> b2(b); boost::weak_ptr<C> b3(c); std::vector< boost::weak_ptr<C> > v1; v1.push_back(b3); foo1(b2.lock()); foo2(b2); try { boost::shared_ptr<C> c1(c); foo3(c1); } catch(boost::bad_weak_ptr& e) { } foo4(b2.lock()); foo5(v1); return 0; } //====================== end of sample.cpp ========================== </pre> Вызовы каких функций выполнены корректно и операции создания их параметров не содержат очевидных проблем?
<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 main.c ----*/ #include <stdio.h> const char* g_name = "programm"; char directory[8]; int main(int argc, char* argv[] ) { int i = 1; const char* right_name = "right"; for (; i<argc; ++i) { if (0 == strcmp(argv[i], right_name)) return 0; } return 1; } /*---- end of main.c ----*/ </pre> В какой части памяти программы из выше приведённого файла main.c находится переменная right_name?
<pre> /*---- start of main.c ----*/ #include <stdio.h> const char* g_name = "programm"; char directory[8]; int main(int argc, char* argv[] ) { int i = 1; const char* right_name = "right"; for (; i<argc; ++i) { if (0 == strcmp(argv[i], right_name)) return 0; } return 1; } /*---- end of main.c ----*/ </pre> В какой части памяти программы из вышеприведённого файла main.c находится переменная argc?