<pre> //====================== start of sample.cpp ========================== volatile unsigned long idx; volatile double times[16]; struct Program { double proc_time; long long mem_size; long long threads[20]; }; int main() { volatile Program prg; long my_idx = idx; double my_time1 = times[1]; double pmy_time5 = dynamic_cast<double*>(×[5]); double *pmy_time10 = const_cast<double*> (×[10]); Program *pmy_prog = static_cast<Program*>(&prg); long long* pmy_thread3 = const_cast<long long*>(&prg.threads[3]); return 0; } //====================== end of sample.cpp ========================== </pre> Присвоения значений каким переменным в файле sample.cpp корректны?
<pre> //====================== start of sample.cpp ========================== class Program { char* prog_name; public: long threads_count; double time_of_work; long version; }; const Program& get_my_program(); int main() { Program& prg = const_cast<Program&>(get_my_program()); long Program::*pmy_thr_count = &Program::threads_count; long my_threads_1 = *pmy_thr_count; long my_threads_2 = prg.*pmy_thr_count; long Program::*pversion = &Program::version; long my_version = (&prg)->*pversion; char* Program::*pmy_name = &Program::prog_name; char* my_name = prg.*pmy_name; return 0; } //====================== end of sample.cpp ========================== </pre> Какие присвоения значений членов класса переменным будут успешны в файле sample.cpp?
<pre> //====================== start of sample.cpp ========================== class Program { static char* prog_name; volatile long threads_count; mutable double time_of_work; long version; public: static char* get_name() { return prog_name; } long* getthreadscount() { return &threads_count; } volatile long* get_threads_count() { return &threads_count; } static double get_time_of_work() { return time_of_work; } volatile long get_version() { return version; } }; //====================== end of sample.cpp ========================== </pre> Какие методы в файле sample.cpp корректно обращаются к членам класса?
<pre> //====================== start of sample.cpp ========================== class Program { long threads_count; double time_of_work; public: char* prog_name; long version; long get_threads_count(); double get_time_of_work(); }; const Program& get_my_program(); typedef double (Program::*my_getter)(); int main() { long Program::*pversion = &Program::version; char* Program::*pmy_name = &Program::prog_name; long (Program::*f_threads_count)() = &Program::get_threads_count; Program& prg = const_cast<Program&>(get_my_program()); long my_version = (prg)->*pversion; char* my_name = prg.*pmy_name; long my_threads_count = (prg.f_threads_count)(); my_getter getter = &Program::get_time_of_work; double my_time_of_work = (prg.*getter)(); return 0; } //====================== end of sample.cpp ========================== </pre> Какие присвоения значений членов класса переменным будут успешны в файле sample.cpp?
<pre>//====================== start of sample.cpp ========================== class Person { public: long GetAge(); bool IsMale(); }; class Trader: private Person { public: long GetAge(); long GetAccount(); }; class Worker { public: long GetExperience(); long GetSalary(); }; class Developer : public Worker, private Person { }; class Boss: protected Worker { public: unsigned short GetLevel(); const char* GetDepartment(); }; class HeadOfAll: public Boss {};//====================== end of sample.cpp ========================== </pre> Для какого из производных классов в файле sample.cpp наследование выполнено для наследования интерфейса?
<pre> //====================== start of sample.cpp ========================== class Program { const char* prog_name; long threads_count; mutable double time_of_work; public: const char* get_name() const { return prog_name; } long get_threads_count() { return threads_count; } bool set_time_of_work(double in_time) const { time_of_work = in_time; return true; } bool add_time_of_work(double in_time) { time_of_work += in_time; return true; } }; const Program& get_my_program(); int main() { const Program& prg = get_my_program(); const char* prg_name1 = prg.get_name(); long my_thr_count1 = prg.get_threads_count(); bool result1 = prg.add_time_of_work(1); Program& prg2 = const_cast<Program& >(prg); long my_thr_count2 = prg2.get_threads_count(); bool result2 = prg2.set_time_of_work(0); bool result3 = prg2.add_time_of_work(1); return 0; } //====================== end of sample.cpp ========================== </pre> При присвоении значений каким переменным в файле sample.cpp корректно используются корректно определённые методы?
<pre> //====================== start of sample.cpp ========================== class Program { public: static char* country; static const int version = 5; static short buid_num = 2223; static char* name; static long long date; }; Program prog; //====================== end of sample.cpp ========================== </pre> Какие объявления и обращения к членам класса и объекта prog, типа Program в файле sample.cpp корректны?
<pre> //====================== start of sample.cpp ========================== template<unsigned long N> class binary { public: static unsigned long const value = binary<N / 10>::value << 1 | N % 10; }; template<> class binary<0> { public: static unsigned long const value = 0; }; template<> class binary<1> { public: static unsigned long const value = 1; }; int main(int argc, char* argv[]) { static unsigned const x0 = binary<0>::value; static unsigned const x1 = binary<1000>::value; static unsigned const x2 = binary<1001>::value; static unsigned const x3 = binary<1010>::value; static unsigned const x4 = binary<1011>::value; return 0; } //====================== end of sample.cpp ========================== </pre> При инициализации какой переменной не будет использоваться конкретизация шаблона с параметром 0?
<pre> //====================== start of sample.cpp ========================== template<unsigned long N> class binary { public: static unsigned long const value = binary<N / 10>::value << 1 | N % 10; }; template<> class binary<0> { public: static unsigned long const value = 0; }; int main(int argc, char* argv[]) { static unsigned const xyz = binary<111>::value; return 0; } //====================== end of sample.cpp ========================== </pre> Конкретизация шаблона с значением 111 приводит:
<pre> //====================== start of sample.cpp ========================== template<unsigned long N> class binary { public: static unsigned long const value = binary<N / 10>::value << 1 | N % 10; }; template<> class binary<0> { public: static unsigned long const value = 0; }; int main(int argc, char* argv[]) { if (argc > 1) { static unsigned const two = binary<10>::value; } return 0; } //====================== end of sample.cpp ========================== </pre> Когда будет посчитано значение переменной two?