<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 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 { 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 ========================== struct Semaphor { const long power_on:1; long red:1; long yellow:1; long green:1; static long is_new_version:1; }; int main() { Semaphor my_semaphor={1}; bool is_red = my_semaphor.red; long* pyellow = &(my_semaphor.yellow); bool power_on = my_semaphor.power_on; int new_version = my_semaphor.is_new_version; return 0; } //====================== end of sample.cpp ========================== </pre> Какие присвоения битовых полей корректны (и соответственно описания этих полей) файле sample.cpp?
<pre> //====================== start of sample.cpp ========================== class User { public: const char* name; inline int age; private: volatile double balance; mutable char* job_name; protected: long long phone_number; static int phone_prefix = 499; }; //====================== end of sample.cpp ========================== </pre> Какие атрибуты класса User объявлены корректно?
<pre> //====================== start of sample.cpp ========================== class User { public: const char* get_name() const; inline int get_age const; private: volatile double get_balance(); mutable char* get_job_name(); protected: long long get_phone_number(); static int get_phone_prefix(); }; //====================== end of sample.cpp ========================== </pre> Какие методы класса User объявлены корректно?
<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?
<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 <class Element, unsigned long max_size> class Storage { public: Storage(Element) {} }; template <class Element> class Storage <Element, 0 /* unlimited*/> { public: Storage(Element e) {} }; template <unsigned long max_size> class Storage <int, max_size> { public: Storage(int e) {} }; template <> class Storage<char*, 0> { public: Storage(char* s) {} }; template <> class Storage<char*, 100> { public: Storage(char* s) {} }; int main() { int p1=4; Storage<int, 5> st1(p1); Storage<char*, 100> st2(char* s); Storage<double, 80000> st3(double n); Storage<double, 0> st4(double n); return 0; } //====================== end of sample.cpp ========================== </pre> Какой из шаблонов Storage в файле sample.cpp не задействован в функции main в файле sample.cpp?