Форум программистов, компьютерный форум CyberForum.ru

тестовые вопросы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Алексей83
1 / 1 / 0
Регистрация: 14.10.2008
Сообщений: 15
23.04.2012, 21:26     тестовые вопросы #1
Добрый вечер, требуется подсказка по трем вопросам из тестов.

1. Заголовок функции имеет вид: void f( float a, float b, float& c);
Укажите правильные варианты вызова функции, если переменные в вызывающей функции описаны так: int a; char b, c; float d, x;

1) f(a, b, c);
2) f(d+a, c, x);
3) f(x, 'c', d);
4) f(a, b, a+1);

2. Какое из приведенных ниже утверждений истинно в применении к указателям на функции?
1) Их нельзя присвоить другим указателям на функции.
2) Их нельзя передать в функцию, но можно из нее возвратить.
3) Их нельзя хранить в массивах.
4) Они указывают на адрес на диске, где компилируется код функции.
5) Их можно сравнивать, используя операции сравнения на равенство.

3. Что неверно при инициализации 'y' в приведенном коде?


class SomeClass
{
int x;
public:
SomeClass (int xx): x(xx) {};
} ;
SomeClass x(10);
SomeClass y(x);

1) Это неверно, потому что SomeClass не содержит виртуального деструктора.
2) Это неверно, потому что SomeClass не содержит конструктора по умолчанию.
3) Здесь нет ничего неверного. С инициализацией 'y' все в порядке.
4) Это неверно, потому что SomeClass не содержит конструктора копирования.

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2012, 21:26     тестовые вопросы
Посмотрите здесь:

тестовые файлы C++
тестовые вопросы открытого типа C++
Вопросы по C++ C++
тестовые вопросы C++
Тестовые вопросы по перегрузке операторов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5956 / 5561 / 1788
Регистрация: 18.12.2011
Сообщений: 14,211
Завершенные тесты: 1
23.04.2012, 22:26     тестовые вопросы #2
По третьему вопросу правильный ответ №4.
По первому и второму вопросу ответы очень спорные,
например, в примерах из первого вопроса компилятор
выдает ошибки только на первый и четвертый
( невозможно преобразовать параметр 3 из 'char' в 'float &' и
невозможно преобразовать параметр 3 из 'int' в 'float &')
хотя в третьем пункте явная ошибка в том, что имя переменной взято в кавычки
Алексей83
1 / 1 / 0
Регистрация: 14.10.2008
Сообщений: 15
23.04.2012, 22:31  [ТС]     тестовые вопросы #3
А разве char к просто float можно преобразовать (вопрос 2, вариант 2)?
Bers
Заблокирован
24.04.2012, 00:15     тестовые вопросы #4
1 -2,3
2 - 5
3 - 3
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
24.04.2012, 07:18     тестовые вопросы #5
Цитата Сообщение от Алексей83 Посмотреть сообщение
1. Заголовок функции имеет вид: void f( float a, float b, float& c);
Укажите правильные варианты вызова функции, если переменные в вызывающей функции описаны так: int a; char b, c; float d, x;
1) f(a, b, c);
2) f(d+a, c, x);
3) f(x, 'c', d);
4) f(a, b, a+1);
2, 3: третий параметр - строго переменная типа float, первые два - значения, приводимые к float, то есть числовые. char считается числом.

Добавлено через 3 минуты
Цитата Сообщение от Алексей83 Посмотреть сообщение
2. Какое из приведенных ниже утверждений истинно в применении к указателям на функции?
1) Их нельзя присвоить другим указателям на функции.
2) Их нельзя передать в функцию, но можно из нее возвратить.
3) Их нельзя хранить в массивах.
4) Они указывают на адрес на диске, где компилируется код функции.
5) Их можно сравнивать, используя операции сравнения на равенство.
Всякий указатель указывает в оперативу, значит 4-й не подходит. Запретов на присваивание, хранение в массивах и передачу в параметре ни для каких указателей нет, значит первые три тоже ложны. И любые указатели можно сравнивать на равенство и не равенство, значит пятый - истина.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
24.04.2012, 07:21     тестовые вопросы #6
Цитата Сообщение от zss Посмотреть сообщение
По третьему вопросу правильный ответ №4.
Не-а, компилятор сам генерирует копиконструктор, так что с инициализацией в данном случае все в порядке.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
24.04.2012, 07:26     тестовые вопросы #7
Цитата Сообщение от Алексей83 Посмотреть сообщение
3. Что неверно при инициализации 'y' в приведенном коде?
class SomeClass
{
int x;
public:
SomeClass (int xx): x(xx) {};
} ;
SomeClass x(10);
SomeClass y(x);
1) Это неверно, потому что SomeClass не содержит виртуального деструктора.
2) Это неверно, потому что SomeClass не содержит конструктора по умолчанию.
3) Здесь нет ничего неверного. С инициализацией 'y' все в порядке.
4) Это неверно, потому что SomeClass не содержит конструктора копирования.
Деструктор здесь ни причём, конструктор по дефолту не используется в таком синтаксисе, там всё таки переменная в скобках. Не верно потому, что нет конструктора-копировщика, то есть четвёртый пункт.

Добавлено через 2 минуты
Цитата Сообщение от diagon Посмотреть сообщение
Не-а, компилятор сам генерирует копиконструктор, так что с инициализацией в данном случае все в порядке.
На автомате генерятся оператор копирующего присваивания, деструктор и конструктор без параметров, причём, конструктор только в том случае, если нет вообще ни одного явного конструктора.

Добавлено через 1 минуту
Цитата Сообщение от zss Посмотреть сообщение
хотя в третьем пункте явная ошибка в том, что имя переменной взято в кавычки
Во первых это не кавычки, а апостроф, а во вторых идентификаторы не накладывают ни каких ограничений на значения чаровых констант. Совпадение с именем переменной случайно, 'c' само по себе и допустимо вне зависимости ни от каких переменных.

Добавлено через 2 минуты
Цитата Сообщение от zss Посмотреть сообщение
По первому и второму вопросу ответы очень спорные,
Нет там ничего спорного.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
24.04.2012, 07:35     тестовые вопросы #8
Цитата Сообщение от taras atavin Посмотреть сообщение
На автомате генерятся оператор копирующего присваивания, деструктор и конструктор без параметров
The default constructor (12.1), copy constructor and copy assignment operator (12.8), move constructor and move assignment operator (12.8), and destructor (12.4) are special member functions. [ Note: The implementation will implicitly declare these member functions for some class types when the program does not explicitly declare them
http://www.open-std.org/jtc1/sc22/wg...2012/n3337.pdf
12 раздел, самое начало(242 страница)
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
24.04.2012, 08:00     тестовые вопросы #9
Цитата Сообщение от diagon Посмотреть сообщение
На автомате генерятся оператор копирующего присваивания, деструктор и конструктор без параметров
конструктор копиии сам сгенерируется и скопирует все поля что есть, а т.к. там только одно числовое поле, то с инициализацией проблем нет! другое дело если был бы член указатель
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2012, 19:12     тестовые вопросы
Еще ссылки по теме:

C++ тестовые фреймворки
C++ Тестовые вопросы по теме Перегрузка Операторов
Тестовые вопросы C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Алексей83
1 / 1 / 0
Регистрация: 14.10.2008
Сообщений: 15
24.04.2012, 19:12  [ТС]     тестовые вопросы #10
taras atavin, diagon, panicwassano, благодарю за содержательные ответы!
Yandex
Объявления
24.04.2012, 19:12     тестовые вопросы
Ответ Создать тему
Опции темы

Текущее время: 16:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru