База ответов ИНТУИТ

Программирование на С/С++

<<- Назад к вопросам

<pre> //====================== start of sample3.h ========================== #include &lt;list&gt; #include &lt;vector&gt; template&lt;class Storage&gt; class MyIter {}; template&lt;class Storage&gt; void my_input_process(Storage* in_item) {} template&lt;class Storage, int size&gt; void clear_all(Storage*); template &lt;class Storage, class Element, int size&gt; class BackupInput {}; template &lt;class Storage, class Element, int size&gt; class Input { public: Input() : m_store(size) {} friend class MyIter&lt;Storage&gt;; friend void my_input_process&lt;Storage&gt;(Storage*); friend void clear_all&lt;Storage, 100&gt;(Storage*); friend class BackupInput&lt;Storage, Element, size&gt;; private: Storage m_store; }; Input&lt;std::list&lt;short&gt;, short, 25&gt; input25; int main() { MyIter&lt;std::list&lt;short&gt;&gt; my_iter; BackupInput&lt;std::list&lt;short&gt;, short, 25&gt; backup_input; my_input_process&lt;std::vector&lt;short&gt;&gt;(nullptr); clear_all&lt;std::vector&lt;short&gt;, 25&gt;(nullptr); clear_all&lt;std::list&lt;short&gt;, 100&gt;(nullptr); return 0; } //====================== end of sample3.h ========================== </pre> Какие функции и классы в файле sample.cpp имеют доступ к всем атрибутам глобального объекта input25?

(Ответ считается верным, если отмечены все правильные варианты ответов.)

Варианты ответа
clear_all<std::list<short>, 100>(nullptr);(Верный ответ)
my_input_process<std::vector<short>>()
backup_input(Верный ответ)
clear_all<std::vector<short>, 25>(nullptr);
my_iter(Верный ответ)
Похожие вопросы
<pre> //====================== start of sample.cpp ========================== #include &lt;vector&gt; template &lt;class Storage, int size&gt; class Input { public: Input() : m_store(size) {} private: Storage m_store; }; int main() { Input&lt;int,5&gt; a1; Input&lt;int,6&gt; a2; Input&lt;std::vector&lt;int&gt;,10&gt; v3; Input&lt;std::vector&lt;short&gt;,10&gt; v4; Input&lt;double, 30&gt; *pMyInput = nullptr; return 0; } //====================== end of sample.cpp ========================== </pre> Сколько описаний пользовательских типов будет в скомпилированном коде из файла sample.cpp?
<pre> //====================== start of sample.cpp ========================== template &lt;class Element, unsigned long max_size&gt; class Storage { public: Storage(Element) {} }; template &lt;class Element&gt; class Storage &lt;Element, 0 /* unlimited*/&gt; { public: Storage(Element e) {} }; template &lt;unsigned long max_size&gt; class Storage &lt;int, max_size&gt; { public: Storage(int e) {} }; template &lt;&gt; class Storage&lt;char*, 0&gt; { public: Storage(char* s) {} }; template &lt;&gt; class Storage&lt;char*, 100&gt; { public: Storage(char* s) {} }; int main() { int p1=4; Storage&lt;int, 5&gt; st1(p1); Storage&lt;char*, 100&gt; st2(char* s); Storage&lt;double, 80000&gt; st3(double n); Storage&lt;double, 0&gt; st4(double n); return 0; } //====================== end of sample.cpp ========================== </pre> Какой из шаблонов Storage в файле sample.cpp не задействован в функции main в файле sample.cpp?
<pre> //====================== start of sample.cpp ========================== #include &lt;type_traits&gt; template &lt;typename IT_1, typename IT_2, bool b&gt; IT_2 copy_imp(IT_1 first, IT_1 last, IT_2 out, const std::integral_constant&lt;bool, b&gt;&amp;) { while(first != last) { *out = *first; ++out; ++first; } return out; } template &lt;typename T&gt; T* copy_imp(const T* first, const T* last, T* out, const std::true_type&amp;) { memmove(out, first, (last-first)*sizeof(T)); return out * (last-first); } template &lt;typename I1, typename I2&gt; inline I2 copy(I1 first, I1 last, I2 out) { typedef typename std::iterator_traits&lt;I1&gt;::value_type value_type; return copy_imp(first, last, out, std::has_trivial_assign<value_type>()); } class A {}; int main() { std::vector&lt;short&gt; arr1; std::vector&lt;short&gt; arr2; copy(arr1.begin(), arr1.end(), arr2.begin()); return 0; } //====================== end of sample.cpp ========================== </pre> Какие утверждения про используемую функцию копирования copy_impl() верны?
<pre>//====================== start of sample.cpp ========================== #include &lt;stdio.h&gt; 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 &quot;&quot;;} }; class Region { public: const char* region_name; const char* cheef_name; long size; Region(const char* region_nm = &quot;&quot;) : region_name(region_nm) {} operator long () {return size;} operator const char* () {return region_name;} }; int main() { Person p1(&quot;Vasily Ivanov&quot;); Region r; printf(&quot;Region number %u, driver %s&quot;, static_cast&lt;unsigned short&gt;(r), static_cast&lt;const char*&gt;(p1)); return 0; }//====================== end of sample.cpp ========================== </pre> Какие из имеющихся в файле sample.cpp конструкторов и операторов преобразования задействованы в операциях в функции main()?
<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&lt;Library&lt; main_library; };//====================== end of sample.cpp ========================== </pre> Для какого из классов в фрагменте файла sample.cpp необходима реализация своего оператора копирования?
<pre> //====================== start of sample.cpp ========================== template&lt;typename T&gt; typename T::difference_type my_diff( T&amp; v1, T&amp; v2); template&lt;typename T&gt; T my_diff2(T&amp; v1, T&amp; v2); class A { public: A(int in = 5); typedef short difference_type; difference_type operator-(A&amp;); }; int main() { A i(5); A j(10); my_diff(i,j); int x = 5; int y = 10; my_diff(x,y); return 0; } //====================== end of sample.cpp ========================== </pre> Какие проблемы может решить использование идиомы SFINAE в вышеприведённом коде?
<pre>//====================== start of sample.cpp ========================== #include &lt;vector&gt; 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&lt;unsigned char&gt;* mybuffer = new std::vector&lt;unsigned char&gt;(sizeof(Person) + sizeof(Region), 0); Person* my_person = new (&amp;(mybuffer->at(0))) Person(); my_person-&gt;~Person(); delete my_person; Region* p_region = new (&amp;(mybuffer-&gt;at(0))) Region(); p_region-&gt;~Region(); delete p_region; delete mybuffer; return 0; }//====================== end of sample.cpp ========================== </pre> Какие операции освобождений ресурсов в файле sample.cpp являются лишними или ошибочными?
<pre> //====================== start of sample.cpp ========================== union Lesson { long math_lection_number; short home_work_number; } my_lesson; class Lection { public: union { char* proffesor; short graduate_number; } main_person; union { short home_work_task; char *home_book_name; }; }; int main() { Lesson* pmy_lesson = &amp;my_lesson; Lection my_lection; long lection = my_lesson.math_lection_number; short* phome_work = &amp;(pmy_lesson->home_work_number); char* proffesor = my_lection.proffesor; short gr_number = my_lection.main_person.graduate_number; short my_task = Lection::home_work_task; const char * my_book = my_lection.home_book_name; 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>//====================== start of sample.cpp ========================== #include &lt;vector&gt; 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(&quot;unknown&quot;){} }; 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, &quot;Vasily&quot;, &quot;Ivanov&quot;, 123456); return 0; }//====================== end of sample.cpp ========================== </pre> Значения каких атрибутов каких объектов корректно инициализируются не нулевыми значениями?