Программирование >>  Расширенная версия языка c++ 

1 ... 47 48 49 [ 50 ] 51 52 53 ... 227


Работа обычного конструктора Работа обычного конструктора Работа конструктора копий

Эти строки появились в результате работы следующей программы. Объясните, что именно там происходит и почему.

. .-.

#include <iostream>

using namespace std;

clas lass { . ,

public:

myclassO;

myclass

myclass f ( ) ;

Обычный конструктор myclass::myclass()

cout Работа обычного конструктора\п ;

} ,

Конструктор копий myclass: :тус1аза (ccnst: myclass So)

cou Работа конструктора копиЙ\п ;

Возвращение объекта , . ,

myclass

myclass temp;

return temp;

int main О :i С . .

myclass obj ; :.(

obj=obj.f{);

return

2. Объясните, что в слеющей программе неправильно, и исправьте ее.

В этой программе имеется ошибка #include <iostreairi.-- i



ttinclude <cstdlib> using namespace std;

class rayclass {

int *p; . . public:

myclass(int i) ;

-myclass 0 (delete p; )

friend int getval(myclass o) ;

myclass: :myclass(int i)

p=new int; if(!p) {

cout Опшбка выделения памяти\п ;

exit (1);

*P=i;

in (myclass o) i

return ; получение значения } ...

myclass a(l), b(2) ;

cout getval(a)

cout Nn ;

cout getval[a)

return 0;

getval(b); getval(b);

.11 . t :

3. Объясните своими словами, зачем нужен конструктор копий и чем он отличается от обычного конструктора.

5.3. Устаревшее ключевое слово overload

В ранних версиях C++ для создания перегружаемых функций требовалось ключевое слово overload. Хотя ключевое слово overload в современных компиляторах больше не поддерживается, вы все еще можете встретить его в существующих профаммах, поэтому полезно знать, как оно использовалось.



158. Самоучитель C++

Ниже показана основная форма ключевого слова overload:

overload имя функции;

Здесь унщии - это имя перегружаемой функции. Перед этой инструкцией должно находиться объявление перегружаемой функции. Например,

следующая инструкция сообщает компилятору, что вы будете перегружать функцию timer():

overload timer О ;

Ключевое 0!ю overload является устаревшим и в современных компиляторах C++ не поддерживается.

5.4. Аргументы по умолчанию

В синтаксисе C++ имеется который имеет непосредственное от-

ношение к перегрузке функций и называется аргументом по умолчанию (defaultargument). Аргумент по умолчанию позволяет вам, если при вызове функции соответствующий аргумент не задан, присвоить параметру значение по умолчанию. Как вы увидите далее, применение аргумента по умолчанию является скрытой формой перегрузки функций.

Чтобы передать параметру аргумент по умолчанию, нужно в инструкции определения функции приравнять параметр тому значению, которое вы хотите передать, когда при вызове функции соответствующий аргумент не будет указан. Например, в представленной ниже функции двум параметрам по

умолчанию присваивается значение 0: voi int а = О, int Ь = 0) ;

Обратите внимание, что данный синтаксис напоминает инициализацию переменных. Теперь эту функцию можно вызвать тремя различными способами. Во-первых, она может вызываться с двумя заданными аргументами. Во-вторых, она может вызываться только с первым заданным аргументом. В этом случае параметр b по умолчанию станет равным нулю. Наконец, функция f() может вызываться вообще без аргументов, при этом параметры а иЬ по умолчанию станут равными нулю. Таким образом, все следующие вызовы функции f() правильны:

f(); а и b по умолчанию равны О г

f(10); а равно 10, b по умолчанию равно О - : f{10, 99); а равнО, b равно 99 i



1 ... 47 48 49 [ 50 ] 51 52 53 ... 227

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика