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

1 ... 166 167 168 [ 169 ] 170 171 172 ... 227


Приложение В. Ответы на вопросы и решения упражнений

n; } .

voi а (int n) { а = int get a() { return a;

= n;

class derived: public base

int b; public:

void load b (int n) { b int { return b;

derived obi, ob2;

obl.load a(5) ;

obl.load b(10);

Объект obi присваивается объекту оЬ2 ob2 = obi;

cou Это переменные а и b объекта obi: ; cout obl.geta() obl.get b() \n ;

cou Это переменные а и b объекта оЬ2: ; cout ob2.get a() оЬ2. getb () \n ;

/* Как вы, вероятно, догадались, выводм1е на экран значения одинаковы для обоих объектов

return 0;

ГЛАВА 4

Повторение пройденного

1. При присваивании одного объекта другому объекту того тапа, текущие значения данных всех членов объекта, стоящего справа от оператора при-

передаются соответствующим членам объекта, стоящего слева от оператора присваивания.

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



514 Самоучитель С++

3. Если объект передается функции в качестве аргумента, создается его копия. Однако конструктор копии не вызывается. При завершении работы функции, когда объект удаляется, вызывается деструктор копии.

4. Нарушение принципа независимости объекта и его копии при передаче параметра может возникать в нескольких ситуациях. Например, если деструктор освобождает динамическую память, тогда эта память для аргумента будет потеряна. В общем случае, если деструктор удаляет что-то, что требуется исходному аргументу, аргумент будет испорчен.

: ..

5. ttinclude <iostreaiti>

using namespace std;

class summation I

int num;

long su; / / суммирование чисел num public:

void set 3um(int n) ;

void 3how stjm() { cou суммма чисе nu равн << sum << \n ;

voi :set sum(int n)

- . .. . , . .

int i; .

num = n;

sura = 0; fcir(i=l; i<=n;

sum += i;

summation make sura() -

int i;

summation temp;

cou << Введите число: ; . . . .

temp.set sum(i) ;

return temp;

summation s;



Приложение В. Ответы на вопросы и решения упражнений 5J5 s = inake suin(j ;

s,show sum() ; , .

return 0;

6. Для некотор1х компиляторов ется, чтобы во встраиваем1х функциях не б1ло циклов.

7. ttinclude <iostream> using namespace std;

clas lass {

int num; public:

myclass (int x) { num >:; }

friend int isneg (myclass ob) ;

in (myclass ob)

return (ob.numr 0) ? 1: 0;

myclass a(-l), b(2);

cou< isneg(a< isneg(b);

cout

return 0;

8a, дружественная функция может быть дружественной более чем одному классу.

Упражнения

1. linclude <iostream>

using namespace std;

class letters ( char ch;



1 ... 166 167 168 [ 169 ] 170 171 172 ... 227

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