|
Программирование >> Расширенная версия языка c++
Глава3 Подробное изучение классов В этой главе вы продолжите изучение классов. Вы узнаете о как присвоить один объект другому, как объекты передаются функциям в качестве аргументов, как сделать объект возвращаемым значением функций. Вы также узнаете о новом важном типе функций: дружественных (friend) функциях. Повторение пройденного Перед тем как вы должны правильно ответить на следующие вопросы и сделать упражнения. Пусть дан следующий класс, каковы имена его конструктора и деструктора? int X, у; public; 1 ... впишите конструкторы и деструкторы 2. Когда вызывается конструктор? Когда вызывается деструктор? 3. Пусть дан следующий базовый класс, покажите, как он может наследоваться производным классом Mars. class planet { int moons; double di3t from sun; double diameter; double mass; public; - 4. Имеются два способа сделать функцию встраиваемой. Что это за способы? 5. Приведите, по крайней мере, два ограничения на использование встраиваемых функций. 6. Пусть дан следующие окажите, каким образом объявить объект ob, чтобы значение 100 передать переменной а, а значение X переменной с. class sample { int а; л: i char с; public: sample (int x, char ch) { a - x; с h; } ... 3.1. Присваивание объектов Если тип двух объектов одинаков, то один объект можно присвоить другому. По умолчанию, когда один объект присваивается другому, делается поразрядная копия всех данных-членов копируемого объекта. Например, когда объект (it присваивается объекту о2, то содержимое всех данных объекта о1 копируется в соответствующие члены объекта о2. Это иллюстрируется следующей программой: Прер присваивания объекта . tinclude <iostreajn> .., , ... using namespace std; clas lass { int a, b; public: voi (int i, in) { i; b ; } void ShowO { cout a b Vn ; } > . ..... intmain ( ) ! .A.-: -u : . myclass ol, o2 ,-ol. set (10, 4 ) ; ol присваивается о2 o2 = ol; . ol.show О ; o2,show() ; return 0; В этом примере переменным а и b объекта ol присваиваются соответственно значения 10 и 4. Далее объект о1 присваивается объекту о2. Это приво- Важно понимать, что в инструкции присваивания можно использовать тольКО объекты одинакового типа. Если тип объектов разный, то при компиляции появится сообщение об ошибке. Более того, важно не только чтобы типы объектов были физически одинаковыми, а чтобы одинаковыми были также имена типов. Например, следующая программа неправильна: Эта программа содержит ошибку ♦include <io5treaan> using namespace std; . class myclass f int a, b; public; voi (int i, int ; b = j; } void ShowO { cout a b Xn ; } /* Этот класс похож на класс myclass, но из-за другого имени класса для компилятора он считается другим типом. class yourclass { int a, b; public: void set(int i, int j) { a = i; b = j; } void ShowO { cout a b \n ; } int ma in 0 i . .. . rayclassol; yourclass o2; ol.set(10, 4) ; . дит к тому, что значение переменной присваивается перемен- ной о2.а, а текущее значение переменной ol.b - o2.b. Таким образом, в процессе выполнения программа выведет на экран следующее: 10 4 10 4 Запомните, что присваивание двух объектов просто делает одинаковыми данные этих объектов. Два объекта остаются по-прежнему совершенно независимыми. Например, после выполнения присваивания вызов функции-члена ol.setO для задания значения ol.a не влияет ни на объект о2, ни на значение его переменной а. ..I .. I ; .111 , .jr г ... ; Г:
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |