2011 Вариант 3 (1119599)
Текст из файла
Коллоквиум по C++Вариант 32 апреля 20111Авторское оформление кода сохранено. Выявленные во время написания коллоквиума студентами опечатки исправлены.1. Если есть ошибки в операторах функции main(), исправьте их с помощью операции указания областивидимости «::». Вычеркните операторы, которые не удалось исправить с помощью «::». Для оставшихсяоператоров с помощью операции «::» обозначьте ту область видимости, к которой относится вызываемыйметод.int x = 4;class A { int x ; public : A ( int n = 1);virtual int f ( int a = 0 , int b = 0); };class B { int x ; public : B ( int n = 2);int f ( int a = 0); };class C : public A , public B { int x ; public : C ( int n = 3);int f ( int a , int b = 0);int g ( A * p );};A * p; C c;int main () { p = & c ;x = c .
g ( p );x = c . f ();x = c . f ( x );x = c . f (x , 1);x = p -> f ();x = p -> f ( x );x = p -> f (x , 1); return 3; }2. Укажите лишние и ошибочные операции динамического приведения типа, если таковые имеются в функцииmain(). Дайте необходимые пояснения своим исправлениям.classclassclassclassclassclassKL:M:P:Q:R:public :void g () { cout << " K :: g " ; } };public :void f () { cout << " L :: f " ; } };public : virtual void h () { cout << " M :: h " ; } };public :void f () { cout << " P :: f " ; } };public : virtual void h () { cout << " Q :: h " ; } };public : virtual void f () { cout << " R :: f " ; }virtual void h () { cout << " R :: h " ; } };class S : public Q { public : virtual void f () { cout << " S :: f " ; }virtual void h () { cout << " S :: h " ; } };int main () {S os , * s = & os ; K * k ; L * l ; M * m ; P * p ; Q * q ; R * r ;k = dynamic_cast <K * >( s );s = dynamic_cast <S * >( k );l = dynamic_cast <L * >( k );m = dynamic_cast <M * >( s );p = dynamic_cast <P * >( l );q = dynamic_cast <Q * >( m );r = dynamic_cast <R * >( q );s = dynamic_cast <S * >( p );return 0; }publicpublicpublicpublicpublicKKLMP{{{{{{3.
Для каждого вызова перегруженной функции с одним параметром укажите шаг алгоритма, на которомбудет выбрана наиболее подходящая функция или выявлена неоднозначность. Для выбранной функцииукажите её прототип.int f ( int a = 1){ return a ;}int f ( long double a = 5.0){ return a ;}int main () {short int s ; int i ; bool b ; float f = 1.0 f ; double d = 2.0;f ( s );f ( i );f ( b );f ( f );f ( d ); }4. Для объектов из задания 1 определить, какие конструкторы и деструкторы и в каком порядке будутвыполняться при работе следующего фрагмента программы:int main () { C c ; class D { C c ; B b ; public : D (): b ( c ) { } } d ; }Коллоквиум по C++Вариант 32 апреля 201125.
В открытой части класса cl, предназначенного для работы со сложными объектами, имеются конструктори функция преобразования. Для облегчения работы с объектами этого класса создаётся дополнительныйкласс ObjPtr, в закрытую часть которого включается поле указателя на класс cl.template < class T > class cl { /* ... */public : cl ( const T s = 0);operator T ();};template < class T > class ObjPtr { /* ...
*/ cl <T > * c ; public : /* ... */};Для класса «ObjPtr» написать реализацию операции изменения знака - и операции присваивания = таким образом, чтобы правильными оказались выражения (обязательно использовать и методы, и внешниефункции):ObjPtr <int > t1 , t2 ;/* ... */ t1 = 5; t2 = - t1 ; /* ... */6. Что такое инкапсуляция и для чего она используется в Си++? Привести синтаксическую запись фрагментапрограммы, на котором можно проиллюстрировать понятие инкапсуляции.7.
Что будет выдано в стандартный поток вывода при работе следующей программы?void f ( X & x , int n );struct X { X (){ try { f (* this , 1); cout << " a " ; }catch ( X ){ cout << " b " ; }catch ( int ){ cout << " c " ; }}X ( X &) { cout << " d " ; }virtual ~ X () { cout << " e " ; }};struct Y : X { Y () { try { f (* this , 1);cout << " f " ; }catch ( Y ){ cout << " g " ; }catch ( int ){ cout << " h " ; }cout << " i " ; }Y ( Y &){ cout << " j " ; }~ Y (){ cout << " k " ; }};void f ( X & x , int n ) { try { if ( n < 0) throw -n ;else if ( n == 0) throw x ;else throw n ; }catch ( int ){ cout << " l " ; } }int main () { try { Y a ; }catch (...){ cout << " m " ; return 1; }cout << " n " ; return 0; }8.
Если есть ошибки в следующем фрагменте, то в чём они заключаются? Исправьте ошибки, ничего неудаляя, добавив в общей сложности не более 29 символов.class W{ public : int * w ; void wfclass X : W{ public : int * x ; void xfclass Y : W{ public : int * y ; void yfclass Z : X , Y{ public : int * z ; void zfvoid h () { int hi ; W * pw ; X * px ; Y *pz = new W ;(* pz ). w = & hi ;pz -> xf ((* pz ).
X :: w ); }( int( int( int( intpy ;****Zwp ) {xp ) {yp ) {zp ) {* pz ;wxyz====wp ;xp ;yp ;zp ;}};w = xp ; }};w = yp ; }};x = zp ; y = zp ; }};9. Описать условия включения механизма виртуальности для метода класса. Привести пример записи виртуальной функции и обращения к ней.10. Написать функцию g() с параметром — контейнером-вектором указателей на элементы вещественноготипа. Функция проматривает контейнер в прямом порядке и обнуляет текущее указываемое значение,если следущее значение отрицательно.
Например, [1, −2, 4, −6, −4, 5] → [0, −2, 0, 0, −4, 5]. Далее функция вобратном порядке печатает значения, на которые указывают элементы контейнера. Функция возвращаетчисло изменённых значений..
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.