|
Программирование >> Расширенная версия языка c++
534 Самоучитель C++ myclass lass () . cout Работа обычного конструктора\n ; Конструктор копий ,. .. , -. . .-, myclass: :myclass (const myclass So) cou <c Работа конструктора КОПМЙ\п ; i.. Возвращение объекта myclass ii.yciaa: ; i. \ J myclass temp; return temp ; Int main () myclass obj ; obj=obj . f 0; . = .f:-- return 2. В соответствии с программой, когда объект передается в функцию getvai(), создается его поразрядная копия. Когда функция getval() возвращает свое значение и копия удаляется, выделенная для этого объекта память (на которую указывает указатель р) освобождается. Однако эта память по-прежнему требуется исходному объекту, который использовался при вызове функции getvalQ. Далее представлена исправленная версия программы. Для решения проблемы потребовался конструктор копий. Исправленная версия программы ...,. ... , , , tinclude <iostream> include <cstdlib> jc-i - f. using namespace std; : . . . ; class myclass { . , int *p; , , public: myclass(int i); myclass (const myclass ) ; конструктор копий ~myclass(J {delete p; } friend int getval(myclass o); Приложение В- Ответы на вопросы и решения упражнений 535 myclass: :myclass(int i) - p=new int; iftip) J j: cou <:< Обка выделения памяти\п ; . exit(l); *P=i; Конструктор копий . . myclass: :myclass (const myclass &o) p=new int; выделение памяти для копии if(!p) { cout Опмбка вьщеления памятиХп ; exit (1) ; *p=*o.p; int о) return *o.p; поучение значения myclass a(1) , b(2) ; It -. - I 1 cout cout cout return 0; > - 3. Конструктор копий вызывается, когда один объект используется для инициализации другого. Обычный конструктор вызывается, когда объект создается. 1. tinclude <;iostream> #include <cstdlib> 536 Самоучитель C++ using namespace std; lon 1 (const char *s, cha nd, int base = 10) [ return rtoKs, end, base); int main () long x; char *sl - 100234 ; char *p; x = mystrtol(sl, Sp, 16); cou Основание системы счисления 16 x \n; x - mystrtoKsl, &p, 10); cou << Основание системе! счисления 10 x \п; 1 (si, dp); мвание системе! счисления, заданное по умолчанию cou Основание системе! счисления по умолчана 10: х \п; return 0; 2. Все параметры, которые получают аргументы по умолчанию, должны находиться правее параметров, которые этих аргументов не получают. Таким образом, после того как вы начали присваивать значения аргументам по умолчанию, все последующие параметры также должны получать свои значения по умолчанию. Что касается приведенного в вопросе прототипа функции, то в нем параметр ( значения по умолчанию не получает. 3. Поскольку функции управления позиционированием курсора у различных компиляторов и сред программирования разные, показано только одно из возможнхх решений задачи. Следующая программа предназначена для работы в среде программирования Borland C++. /* Эта программа работает только в среде программирование land C++ ♦include <iostreara> . ,. .- j.r ,c(. .i ftinclude <conio.h> ., using namespace std; voi reol (in n = -1) ; int main () f .- . , int i;
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |