Какво е клас?
Клас C ++ комбинира данни и методи за манипулиране на данните в едно. Класовете определят и формите на обектите. Данните и методите, съдържащи се в клас, са известни като членове на класа. Класът е дефиниран от потребителя тип данни. За достъп до членовете на класа използваме екземпляр на класа. Можете да видите клас като план за обект.
Един клас да бъде прототип на къща. Той показва местоположението и размерите на вратите, прозорците, подовете и т.н. От тези описания можем да построим къща. Къщата се превръща в обект. Възможно е да се създадат много къщи от прототипа. Също така е възможно да се създадат много обекти от клас.
На горната фигура имаме прототип на една къща. От този прототип създадохме две къщи с различни характеристики.
В този урок ще научите:
- Какво е клас?
- Пример за клас
- Частни и публични ключови думи
- Определение на обекта
- Достъп до членове на данни
- Функции на членовете на класа
- Конструктори и деструктори
Декларация за клас
В C + клас се дефинира с помощта на ключовата дума class. Следва името на класа. След това тялото на класа се добавя между фигурните скоби {}.
Синтаксис:
class class-name{// data// functions};
- Името на класа е името, което трябва да се присвои на класа.
- Данните са данните за класа, обикновено декларирани като променливи.
- Функциите са функции на класа.
Частни и публични ключови думи
Трябва да сте попаднали на тези две ключови думи. Те са модификатори на достъпа.
- Частно:
Когато частната ключова дума се използва за дефиниране на функция или клас, тя става частна. Такива са достъпни само от класа.
- Публично:
Публичната ключова дума, от друга страна, прави данните / функциите публични. Те са достъпни извън клас.
Определение на обекта
Обектите се създават от класове. Обектите на класа се декларират по подобен начин, както се декларират променливите. Името на класа трябва да започне, последвано от името на обекта. Обектът от типа на класа.
Синтаксис:
class-name object-name;
- Името на класа е името на класа, от който трябва да се създаде обект.
- Името на обекта е името, което трябва да бъде присвоено на новия обект.
Този процес на създаване на обект от клас е известен като инстанциране.
Достъп до членове на данни
За достъп до публични членове на клас използваме (.) Точков оператор. Това са членове, маркирани с модификатор за обществен достъп.
Пример 1:
#includeusing namespace std;class Phone {public:double cost;int slots;};int main() {Phone Y6;Phone Y7;Y6.cost = 100.0;Y6.slots = 2;Y7.cost = 200.0;Y7.slots = 2;cout << "Cost of Huawei Y6 : " << Y6.cost << endl;cout << "Cost of Huawei Y7 : " << Y7.cost << endl;cout << "Number of card slots for Huawei Y6 : " << Y6.slots << endl;cout << "Number of card slots for Huawei Y7 : " << Y7.slots << endl;return 0;}
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream в нашия код, за да използвате неговите функции.
- Включвайки std пространството от имена в нашия код, за да използваме класовете му, без да го извикваме.
- Декларирайте клас на име Телефон.
- Използване на модификатора на публичния достъп за маркиране на променливите, които предстои да създадем, като обществено достъпни.
- Декларирайте променливата цена на двоен тип данни.
- Декларирайте целочислена променлива с име slots.
- Край на тялото на класа.
- Извикване на функцията main (). Логиката на програмата трябва да бъде добавена в нейното тяло.
- Създайте обект на име Y6 от тип Телефон. Това се нарича инстанциране.
- Създайте обект на име Y7 от тип Телефон. Това се нарича инстанциране.
- Осъществявайте достъп до променливата / цената на члена на клас Телефон, използвайки обекта Y6. Стойността е зададена на 100,0. Сега цената на Y6 е зададена на 100,0.
- Достъп до слотовете за променливи / членове на клас Телефон с помощта на обекта Y6. Стойността е настроена на 2. Слотовете за Y6 вече са настроени на 2.
- Достъп до променливата / цената на членовете на клас Телефон, използвайки обекта Y7. Стойността е зададена на 200,0. Цената на Y7 вече е зададена на 200,0.
- Достъп до слотовете за променливи / членове на клас Телефон с помощта на обекта Y7. Стойността е настроена на 2. Слотовете за Y7 вече са настроени на 2.
- Отпечатайте цената на Y6 на конзолата заедно с друг текст.
- Отпечатайте цената на Y7 на конзолата заедно с друг текст.
- Отпечатайте броя на слотовете за Y6 заедно с друг текст.
- Отпечатайте броя на слотовете за Y7 заедно с друг текст.
- Програмата трябва да върне стойност при успешно завършване.
- Край на тялото на main () функция.
Какво е частен клас?
Членовете на класа, маркирани като частни, могат да бъдат достъпни само чрез функции, дефинирани в класа. Всеки обект или функция, дефинирани извън класа, не могат да имат директен достъп до такива членове. Член на частен клас е достъпен само от функции на член и приятел.
Какво е защитен клас?
Членовете на класа, маркирани като защитени, имат предимство пред тези, маркирани като частни. Те могат да бъдат достъпни чрез функции в класа на тяхната дефиниция. Освен това те могат да бъдат достъпни от производни класове.
Пример 2:
#includeusing namespace std;class ClassA {public:void set_a(int val);int get_a(void);private:int a;};int ClassA::get_a(void) {return a;}void ClassA::set_a(int val) {a = val;}int main() {ClassA a;a.set_a(20);cout << "Value of a is: " << a.get_a();return 0;}
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream в нашия код, за да използвате неговите функции.
- Включете std пространството от имена в нашия код, за да използвате класовете му, без да го извиквате.
- Създайте клас с име ClassA.
- Използвайте модификатора за публичен достъп, за да маркирате члена на класа, който ще бъде създаден като обществено достъпен.
- Създайте функцията с име set_a (), която приема една цяла стойност val.
- Създайте функция с име get_a ().
- Използвайте модификатора за частен достъп, за да маркирате члена на класа, който ще бъде създаден като частно достъпен.
- Декларирайте целочислена променлива с име a.
- Край на тялото на класа.
- Използвайте името на класа и оператора за разделителна способност за достъп до функцията get_a (). Искаме да определим какво прави функцията при извикване.
- Функцията get_a () трябва да върне стойността на променлива a при извикване.
- Край на дефиницията на функцията get_a ().
- Използвайте името на класа и оператора за разделителна способност за достъп до функцията set_a (). Искаме да определим какво прави функцията при извикване.
- Присвояване на стойността на променливата val на променлива a.
- Край на дефиницията на функцията set_a ().
- Извикайте функцията main (). Логиката на програмата трябва да бъде добавена в тялото на тази функция.
- Създайте екземпляр на ClassA и му дайте името a.
- Използвайте горния екземпляр на клас и функцията set_a (), за да присвоите стойност 20 на променливата a.
- Отпечатване на текст заедно със стойността на променлива a на конзолата. Стойността на променлива a се получава чрез извикване на функцията get_a ().
- Програмата трябва да върне стойност при успешно завършване.
- Край на тялото на функцията main ().
Пример 3:
#includeusing namespace std;class ParentClass {protected:int value;};class ChildClass : public ParentClass {public:void setId(int x) {value = x;}void displayValue() {cout << "Value is: " << value << endl;}};int main() {ChildClass c;c.setId(21);c.displayValue();return 0;}
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream в нашия код, за да използвате неговите функции.
- Включете std пространството от имена в нашия код, за да използвате класовете му, без да го извиквате.
- Създайте клас с име ParentClass.
- Използвайте модификатора на защитения достъп, за да маркирате члена на класа, който ще бъде създаден като защитен.
- Създайте целочислена променлива с име на стойност.
- Край на тялото на класа.
- Създайте нов клас с име ChildClass, който наследява ParentClass.
- Използвайте модификатора на защитения достъп, за да маркирате члена на класа, който ще бъде създаден като достъпен за дъщерни класове.
- Създайте функцията с име setId (), която приема една цяло число x.
- Присвояване на стойността на променливата x на стойността на променливата.
- Край на дефиницията на функцията setId ().
- Създайте функция с име displayValue ().
- Отпечатайте стойността на променливата с име на стойност на конзолата заедно с друг текст.
- Край на тялото на функцията displayValue ().
- Край на тялото на класа с име ChildClass.
- Извикайте функцията main (). Логиката на програмата трябва да бъде добавена в тялото на тази функция.
- Създайте екземпляр на ChildClass и му дайте името c.
- Използвайте горния екземпляр на клас и функцията setId (), за да присвоите стойност 21 на променливата x.
- Използвайте горния екземпляр на клас, за да извикате функцията с име displayValue ().
- Програмата трябва да върне стойност при успешно завършване.
- Край на тялото на функцията main ().
Функции на членовете на класа
Функциите ни помагат да манипулираме данните. Функциите на членовете на класа могат да бъдат дефинирани по два начина:
- Вътре в дефиницията на класа
- Извън дефиницията на класа
Ако дадена функция трябва да бъде дефинирана извън дефиницията на клас, трябва да използваме оператора за резолюция на обхвата (: :). Това трябва да бъде придружено от имената на класове и функции.
Пример 2:
#include#include using namespace std;class Guru99{public:string tutorial_name;int id;void printname();void printid(){cout << "Tutorial id is: "<< id;}};void Guru99::printname(){cout << "Tutorial name is: " << tutorial_name;}int main() {Guru99 guru99;guru99.tutorial_name = "C++";guru99.id = 1001;guru99.printname();cout << endl;guru99.printid();return 0;}
Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream в нашата програма, за да използвате неговите функции.
- Включете заглавния файл на низа в нашата програма, за да използвате неговите функции.
- Включете std пространството от имена в нашия код, за да използвате класовете му, без да го извиквате.
- Създайте клас на име Guru99.
- Използвайте модификатора за публичен достъп, за да маркирате членовете на класа, които предстои да създадем, като обществено достъпни.
- Създайте низова променлива с име tutorial_name.
- Създайте цяло число променлива с име id.
- Създайте функция с име printname (). Тази функция не е дефинирана в дефиницията на класа.
- Създайте функция с име print (). Тази функция е дефинирана в дефиницията на класа. Тялото му е добавено в рамките на дефиницията на класа.
- Отпечатайте стойността на променливата id заедно с друг текст на конзолата. Имайте предвид, че това е добавено в тялото на функцията printid (). Той ще бъде изпълнен само когато бъде извикана функцията printid ().
- Край на тялото на функцията printid ().
- Край на тялото на класа Guru99.
- Началото на дефиницията на функцията printname ().
- Отпечатайте стойността на променливата tutorial_name на конзолата заедно с друг текст. Имайте предвид, че това е добавено в тялото на функцията printname (). Той ще бъде изпълнен само при извикване на функцията printname ().
- Край на дефиницията на функцията printname ().
- Извикайте функцията main (). Логиката на програмата трябва да бъде добавена в тялото на тази функция.
- Създайте екземпляр на клас Guru99 и му дайте името guru99.
- Използвайте горния екземпляр, за да присвоите стойност на C ++ на променливата tutorial_name.
- Използвайте екземпляра guru99, за да присвоите стойност 1001 на променливата id.
- Използвайте екземпляра guru99, за да извикате функцията printname ().
- Извикайте командата end (end line), за да отпечатате нов празен ред на конзолата.
- Използвайте екземпляра guru99, за да извикате функцията printid ().
- Програмата трябва да върне стойност при успешно завършване.
- Край на тялото на main () функция.
Конструктори и деструктори
Какво е конструктори?
Конструкциите са специални функции, които инициализират обекти. Компилаторите на C ++ извикват конструктор, когато създават обект. Конструкторите помагат за присвояване на стойности на членовете на класа. Разбира се, това е след като им е отредено малко място в паметта.
Какво е деструктори?
Деструкторите, от друга страна, помагат за унищожаването на обекти от класа.
Името на конструктора трябва да е подобно на името на класа. Конструкторите нямат тип връщане.
Конструкторът може да бъде дефиниран вътре или извън тялото на класа. Ако е дефинирано извън тялото на класа, то трябва да бъде дефинирано с името на класа и оператора за разделителна способност (: :).
Пример 3:
#includeusing namespace std;class ClassA {public:ClassA() {cout << "Class constructor called"< Изход:
Ето екранна снимка на кода:
Обяснение на кода:
- Включете заглавния файл на iostream в кода, за да използвате неговите функции.
- Включете std пространството от имена в нашия код, за да използвате класовете му, без да го извиквате.
- Създайте клас с име ClassA.
- Използвайте модификатора за публичен достъп, за да маркирате члена, който предстои да създадем, като обществено достъпен.
- Създайте конструктор за класа.
- Текст за отпечатване на конзолата при извикване на конструктора. Endl е ключова дума на C ++, което означава краен ред. Премества курсора на мишката към следващия ред.
- Край на тялото на конструктора на класа.
- Създайте деструктор за класа.
- Текст за отпечатване на конзолата при извикване на деструктора. Endl е ключова дума на C ++, което означава краен ред. Премества курсора на мишката към следващия ред.
- Край на тялото на деструктора.
- Край на тялото на класа.
- Извикайте функцията main (). Логиката на програмата трябва да бъде добавена в тялото на тази функция.
- Създайте обект на клас и му дайте името a. Ще бъде извикан конструкторът.
- Създайте цяло число променлива с име p и му присвойте стойност 1.
- Създайте оператор if, като използвате променливата p.
- Създайте обект на клас и му дайте името b. Ще бъде извикан деструкторът.
- Край на тялото на оператора if.
- Край на тялото на основната () функция.
Резюме:
- C ++ е обектно-ориентиран.
- Класовете формират основните характеристики на C ++, които го правят обектно-ориентиран.
- Клас C ++ комбинира данни и методи за манипулиране на данните в едно.
- Класът е план за обект.
- Класовете определят формата на обект.
- Данните и методите, съдържащи се в клас, са известни като членове на класа.
- За достъп до членовете на класа трябва да използвате екземпляр на класа.
- За да създадем клас, използваме ключовата дума class.
- Функциите на членовете на класа могат да бъдат дефинирани във или извън клас.