![]() |
|
Программирование >> Расширенная версия языка c++
Приложение В. Ответы на вопросы и решения упражнений 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;
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |