×
Traktatov.net » Освой самостоятельно С++ за 21 день » Читать онлайн
Страница 436 из 448 Настройки

26: }

27:

28: int main()

29: {

30:    Animal peppy;

31:    setValue(peppy,5);

32:    setValue(peppy,7,9);

33:    return 0:

34: }

Функиия setValue(Animal& ,int) была объявлена дружественной, но перегруженная

функция setValue(Animal& ,int,int) не была объявленадружественной.

8. Исправьте листинг, приведенный в упражнении 7, и откомпилируйте его.

1: #include

2:

3: class Animal;

4:

5: void setValue(Animal& , int);

6: void setValue(Animal& , int.int);

7:

8: class Animal

9: {

10:   friend void setValue(Animal& ,int);

11:   friend void setValue(Animal& ,int.int): // изменение!

12:   private:

13:      int itsWeight;

14:      int itsAge;

15: };

16:

17: void setValue(Animal& theAnimal, int theWeight)

18: {

19:    theAnimal.itsWeight = theWeight;

20: }

21:

22:

23: void setValue(Animal& theAnimal, int theWeight, int theAge)

24: {

25:    theAnimal.itsWeight = theWeight;

26:    theAnimal.itsAge = theAge;

27: }

28:

29: int main()

30: {

31:    Animal peppy;

32:    setValue(peppy.5);

33:    setValue(peppy,7,9);

34:    return 0;

35: } 

День 16

Контрольные вопросы 

1. Что такое оператор ввода и как он работает?

Оператор ввода (>>) является членом объекта istream и используется для записи данных в переменные программы.

2. Что такое оператор вывода и как он работает?

Оператор вывода (<<)является членом объекта ostream и используется для записи данных в устройство вывода.

3. Перечислите три варианта перегруженной функции cin.get() и укажите основные их отличия.

Первый вариант функции-члена get() используется без параметров. Она возвращает значение считанного символа. При достижении кониа файла она возвратит EOF (end of file, т.е. конец файла).

Второй вариант функции-члена cin.get() принимает в качестве параметра ссылку на символьную переменную. Этой переменной присваивается следующий символ в потоке ввода. Возвращаемым значением этой функции является объект iostream.

В третьей, последней версии в функции get() устанавливаются массив символов, количество считываемых символов и символ разделения (которым по умолчанию является разрыв строки). Эта версия функции get() возвращает символы в массив либо до тех пор, пока не будет введено максимально возможное количество символов, либодо первого символа разрыва строки. Если функция get() встречает символ разрыва строки, ввод прерывается, а символ разрыва строки остается в буфере ввода.

4. Чем сin.read()отличается от сin.getline()?

Функция cin.read() используется для чтения структур двоичных данных.

Функция cin.getline() предназначена для чтения из буфера istream.

5. Какая ширина устанавливается по умолчанию для вывода длинных целых чисел с помощью оператора вывода?

Автоматически устанавливается ширина, достаточная для отображения всего числа.

6. Какое значение возврашает оператор вывода?

Ссылку на объект istream.

7. Какой параметр принимается конструктором объекта ofstream?

Имя открываемого файла.

8. Чтоустанавливаетаргумент ios::ate?

Аргумент ios::ate помещает точку ввода в конец файла, но вы можете записывать данные в любом месте файла.

 Упражнения

 1. Напишите программу, использующую четыре стандартных объекта класса iostream — cin, cout, cerr и clog.