C++ за 21 день седьмое издание



Download 1,38 Mb.
bet174/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   170   171   172   173   174   175   176   177   ...   437
Bog'liq
word1

#include




  1. #include




  1. using namespace std;








  1. class Human




  1. {




  1. private:




  1. string Name;




  1. int Age;



9:

  1. friend class Utility;

1 1 :

  1. public:




  1. Human(string InputName, int InputAge)




  1. {




  1. Name = InputName;

Резюме

2 4 3



Age = InputAge;

}


class Utility



    1. {




  1. public:



1:: static void DisplayAge(const Human& Person)

  1. {



I:: cout « Person.Age « endl;

}
};




1?: int main()



  1. Human FirstMan("Adam", 25);




31:

cout «

"Accessing private member Age via friend class: ";

3

2:

Utility::DisplayAge(FirstMan);

3::

return

0;

31:

}









Результат


Accessing private member Age via friend class: 25


Анализ

Строка 10 объявляет класс U t i l i t y дружественным классу Human. Это позволяет всем методам класса U t i l i t y обращаться даже к закрытым переменным -членам и методам класса Human.




Резюме

Это занятие познакомило вас с одной из самых фундаментальных концепций язь!ка C++ — классом и ключевым словом c l a s s . Вы узнали, что класс инкапсулирует данные-члены и функции-члены для их использования. Было показано, что такие модификаторы доступа, как p u b l i c и p r i v a t e , позволяют абстрагировать данные и функции, которые сущностям вне класса не нужно видеть.


Вы изучили концепцию конструкторов копий и то, как с помощью конструкторов пе­ ремещения компилятор C++11 позволяет оптимизировать случаи нежелательных этапов копирования. Мы также рассмотрели некоторые частные случаи, где все эти элементы объединяются, позволяя реализовать такие шаблоны проектирования, как “синглетон”.




Вопросы и ответы

В чем разница между экземпляром класса и объектом того же класса?





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



244 ЗАНЯТИЕ 9. Классы и объекты



    1. К ак лучш е получить доступ к члену: используя точечный оператор ( .) или опера­ тор указателя (->)?

Если у вас есть указатель на объект, то лучше использовать оператор указателя. Если объект создан в стеке как локальная переменная, то лучше подойдет точечный оператор.



    1. Должен ли я всегда создавать конструктор копий?

Если среди переменных-членов вашего класса есть интеллектуальные указатели, стро­ ковые классы или контейнеры STL, такие как s td : : vecto r, то стандартный конструк­ тор копий, предоставляемый компилятором, гарантирует вызов их конструкторов ко­ пий. Однако, если среди членов вашего класса есть простой указатель (такой как in t* для динамического массива вместо s td : :v e c to r< in t> ), необходимо предоставить конструктор копий, гарантирующий глубокое копирование массива при вызове функ­ ции, которой объект класса передается по значению.





    1. У моего класса есть только один конструктор, парам етр которого бы л определен со значением по умолчанию . Это все еще стандартны й конструктор?

Да. Если экземпляр класса может быть создан без аргументов, то считается, что у клас­ са есть стандартный конструктор. У класса может быть только один стандартный кон­ структор.



    1. Почему некоторые примеры данного занятия используют такие функции, как S e tA g e () для установки значения таки х перем енны х, к ак Human: :A ge? П очему бы не сделать переменную Аде откры той и не присваивать ей значение, когда нужно?

С технической точки зрения открытая переменная-член Human: : Age также вполне ра­ ботоспособна. Однако с точки зрения проекта данные-члены имеет смысл оставить за­ крытыми. Функции доступа, такие как GetAge () или SetA ge (), являются корректным и рекомендуемым способом доступа к этим закрытым данным, позволяя выполнять проверки на ошибки прежде, чем, например, значение переменной Human: : Age будет установлено или удалено.





  1. Почему конструктору копий в качестве парам етра по ссылке передается оригинал?

Прежде всего, такого конструктора копий ожидает компилятор. Причина в том, что кон­ структор копий вызвал бы сам себя, если бы получил оригинал по значению, что при­ вело бы к бесконечному циклу копирования.




Коллоквиум



  1. этом разделе предлагаются вопросы для самоконтроля и закрепления полученных знаний, а также упражнения, которые помогут применить на практике полученные навы­ ки. Попытайтесь самостоятельно ответить на эти вопросы и выполнить задания, а потом сверьте полученные результаты с ответами в приложении Г, “Ответы”. Если остались не­ ясными хотя бы некоторые из предложенных ниже вопросов, не приступайте к изучению материала следующего занятия.




Download 1,38 Mb.

Do'stlaringiz bilan baham:
1   ...   170   171   172   173   174   175   176   177   ...   437




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish