6. Что такое область видимости?
Область видимости определяет "продолжительность жизни" локальных и глобальных переменных и обычно устанавливается набором фигурных скобок.
7. Что такое рекурсия?
В общем случае это способность функции вызывать самое себя.
8. Когда следует использовать глобальные переменные?
Глобальные переменные обычно используются, когда многим функциям нужен доступ к одним и тем же данным. В C++ глобальные переменные используются очень редко. Как только вы научитесь создавать статические переменные класса, вы практически не будете обращаться к глобальным переменным.
9. Что такое перегрузка функции?
Это способность записать несколько функций с одним и тем же именем, но с различным числом или типом параметров.
10. Что такое полиморфизм?
Это возможность вызова одноименных методов для объектов разных, но взаимосвязанных типов с учетом различий в выполнении функции для разных типов. В C++ полиморфизм реализуется путем создания производных классов и виртуальных функций.
1. Запишите прототип для функции с именем Perimeter, которая возвращает значение типа unsigned long int и принимает два параметра, имеющих тип unsigned short int.
unsigned long int Perimeter(unsigned short int, unsigned short int);
2. Запишите определение функции Perimeter согласно объявлению в упражнении 1. Два принимаемых ею параметра представляют длину и ширину прямоугольника, а функция возвращает его периметр (удвоенная длина плюс удвоенная ширина).
unsigned long int Perimeter(unsigned short int length, unsigned short int width)
{
return 2*length + 2*width;
}
3. Жучки: что неправильно в этой функции?
#include
void myFunc(unsigned short int x);
int main()
{
unsigned short int x, у;
у = myFunc(int);
cout << "x: " << x << " у: " << у << "\n";
}
void myFunc(unsigned short int x)
{
return (4*x);
}
Функция объявлена с использованием ключевого слова void, и поэтому она не может возвращать какое-либо значение. Кроме того, при вызове функции myFunc ей следует передать параметр x, а не int.
4. Жучки: что неправильно в этой функции?
#include
int myFunc(unsigned short int x);
int main()
{
unsigned short int x, у;
у = myFunc(x);
cout << "x: " << X << " у: " << у << "\n";
}
int myFunc(unsigned short int x);
{
return (4*x);
}
Эта функция была бы идеальной, если бы не точка с запятой, поставленная в конце заголовка ее определения.
5. Напишите функцию, которая принимает два параметра типа unsigned short int и возвращает результат деления первого параметра на второй. Функция не должна выполнять операцию деления, если второе число равно нулю, но в этом случае она должна возвратить значение -1.
short int Divider(unsigned short int valOne, unsigned short int valTwo)
{
if (valTwo == 0)
return -1;
else
return valOne / valTwo;
}
6. Напишите программу, которая запрашивает у пользователя два числа и вызывает функцию, записанную при выполнении упражнения 5. Выведите результат или сообщение об ошибке, если функция возвратит значение, равное -1.
#include
typedef unsigned short int USHORT;
typedef unsigned long int ULONG;
short int Divider(
unsigned short int valone,
unsigned short int valtwo);
int main()
{
USHORT one, two;
short int answer;
cout << "Enter two numbers.\n Number one: ";
cin >> one;
cout << "Number two: ";
cin >> two;
answer = Divider(one, two);
if (answer > -1)
cout << "Answer: " << answer;
else
cout << "Error, can't divide by zero!";
return 0;
}
7. Напишите программу, которая запрашивает число и показатель степени. Напишите рекурсивную функцию, которая возводит число в степень путем многократного умножения числа на самое себя, т.е. если число равно 2, а показатель степени равен 4, то эта функция должна возвратить число 16.
#include
typedef unsigned short USHORT;
typedef unsigned long ULONG;
ULONG GetPower(USHORT n, USHORT power);
int main()
{
USHORT number, power;
ULONG answer;
cout << "Enter a number: ";
cin >> number;
cout << "To what power? ";
cin >> power;
answer = GetPower(number,power);
cout << number << " to the " << power << "th power is " << answer << endl;
return 0;
}
ULONG GetPower(USHORT n, USHORT power)
{
if(power == 1)
return n;
else
return (n * GetPower(n,power-1));
}
1. Что представляет собой оператор прямого доступа и для чего он используется?
Оператор точки прямого доступа представляет собой символ точки (.). Он используется для обращения к членам класса.
2. Что резервирует память — объявление или определение?
Память резервируется определениями переменных. Объявления классов не резервируют память.
3. Объявление класса является его интерфейсом или выполнением?
Объявление класса является его интерфейсом, который сообщает клиентам класса, как с ним взаимодействовать. Выполнение класса — это набор функций-членов, сохраняемых обычно в файле с расширением CPP.
Читать дальше