Примеры неоднозначности при перегрузке функций. (л.11)
Перегрузка функций. Примеры перегрузки функций. (л.11)
Пример функции, получающей в качестве параметра и возвращающей значения перечислимого типа. (метод. указ. к лаб.работе 3)
Функции с переменным числом аргументов. (л.10)
Функции с параметрами по умолчанию. (л.10)
Встраиваемые функции (inline-функции). (л.10)
Модификатор const. Его назначение при передаче параметров в функцию по указателю и по ссылке.(л.10)
Использование в функции локальных статических переменных. (л.10)
Использование ссылки в качестве типа возвращаемого функцией значения. (л.10)
С какой целью к составным данным применяют способ передачи параметров по ссылке даже в том случае, если они не являются результатами, возвращаемыми функциями. Что необходимо предпринять, чтобы случайное изменение формального параметра в функции не изменило значение аргумента (л.10)
14. Объяснить ошибку (л.10):
double *p = new double;
double& ref = *p;
ref = 1.0;
delete p;
ref = 1.5;
21. *Обработка завершения программы с помощью функции atexit(). (л.10)
23. Указать и объяснить ошибку, если она есть (л.10):
void f(const int* p)
{*p = 17;
int i = 29;
p = &i;
}
int i = 17; // в main
f(&i);
void f(const int& p)
{p = 17;
}
int i = 17; // в main
f(i);
void f(const int& p)
{int i = 29;
p = i;
}
int i = 17; // в main
f(i);
void f(int*);
int i = 17; // в main
const int* p = &i;
f(&i);
void f(int*);
int i = 17; // в main
const int* p = &i;
f(p);
void f(int*);
int i = 17; // в main
const int* p = &i;
const int j = 29;
f(&j);
24. Какие типы возвращаемых значений недопустимы для функций? (л.10)
25. Установить область действия идентификаторов (л.10):
int cube(int y);
void main() {
int y;
for (int x=1; x<=10; x++)
cout<<cube(x)<<endl;
y=cube(x)*cube(x);
}
int cube(int e) {return e*e*e;}
________________________________________________________________________________________________________________________________________________________
28. Указать возможность вызова функций (л.11):
extern void manip( int );
int main()
{
manip( 'a' );
return 0;
}
extern void print(int);
unsigned char uc;
print(uc);
extern void ff(int);
extern void ff(char);
enum Stat (Fail, Pass);
int main() {
ff(Pass);
ff(0);
}
29. Объяснить вызов перегруженных функций (л.11):
enum e1 { a1, b1, c1 };
enum e2 { a2, b2, c2=0x80000000 };
string format( int );
string format( unsigned int );
int main() {
format(a1);
format(a2);
return 0;
}
30. Объяснить ошибки при вызове перегруженных функций (л.11):
float f(float i);
double f(double i);
int main()
{
float x=10.09f;
double y=10.09;
cout << f(x) <<endl ;
cout << f(y) <<endl ;
cout << f(10) <<endl ;
_getch();
return 0;
}
int f(int a);
int f(int a, int b=1);
int main()
{
cout << f (10, 2) << endl;
cout << f (10) << endl;
_getch();
return 0;
}
int f(int a, int b);
int f(int a, int& b);
int main()
{
int ix=5, iy=10;
cout << f (ix, iy) << endl;
_getch();
return 0;
}
31. *Какие возможности предоставляет неиспользуемый формальный параметр в функции? (л.10)
32. Указать и объяснить ошибку, если она есть (л.10):
void swap(int* p, int* q);
void swap(int* p, int* q, int);
int main ()
{
int x=2;
int y=5;
swap(&x, &y, 5);
cout << x << " " << y << endl;
_getch();
return 0;
}
void swap(int* p, int* q, int)
{
int t = *p;
*p = *q;
*q = t;
}
void swap(int* p, int* q)
{
int t = *p;
t += *q;
*q = t;
}