Вступ до перевантаження та переосмислення в C ++
Почнемо це з базових визначень для перевантаження та переосмислення в C ++.
Перевантаження : Назва функції однакове, але параметри та тип повернення змінюються. Оскільки ми дізнаємось про різницю між перевантаженими функціями під час компіляції, це також називається поліморфізмом компільованого часу.
Переосмислення: Це особливість об'єктно-орієнтованої мови програмування, коли функція дочірнього класу має те саме ім’я, що і функція батьківського класу. Оскільки функція, що переважає, надходить на зображення, як тільки об’єкт оголошується, і до них доступні функції за допомогою об'єктів; тобто під час виконання коду ця концепція переосмислення також називається поліморфізмом часу виконання.
У наступних розділах ми маємо їх синтаксис та шляхи їх програмування.
Синтаксис перевантаження і переосмислення
Ось наведений нижче синтаксис перевантаження та переосмислення.
Перевантаження синтаксису:
return_type function_name ( int param_1, string param_2)
(
//function definition
)
return_type_2 function_name ( int param_1, string param_2)
(
//function definition
)
return_type function_name ( int param_1, int param_2)
(
//function definition
)
Усі три разом можуть скласти приклад концепції перевантаження.
Переважаючий синтаксис:
Class A
(
Public:
void function_name ( int param_1, int param_2)
(
//function definition
)
);Class B : Class A
(
Public:
void function_name ( int param_1, int param_2)
(
//function definition
)
);
Викладене вище - синтаксис переважаючої функціональності. Основний вихід може бути зроблений після того, як ми оголосимо об'єкт і викликаємо ті самі методи з класів A і класу B. У функціональності переопределення "Об'єкт" відіграє важливу роль.
Тепер давайте подивимося на кожному прикладі, щоб краще ознайомитися з їх функціональністю.
Приклади перевантаження та перезавантаження в C ++
Ось приклади перевантаження та переосмислення в C ++ з результатом, наведеним нижче:
Приклад №1 - Перевантаження
Почнемо з простої програми.
Код:
#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)
Вихід:
Тепер, що робити, якщо я даю неправильні значення типу даних для змінних a, b?
Код:
int main()
(
int a = 10.8;
float b = 12;
calc(a);
calc(b);
calc(a, b);
)
Я змінив лише основну частину вищезгаданої програми, тому тут йде вихід.
вихід:
Це дає нам вихід, оскільки він буде перетворювати значення float в тип даних int і дає нам вихід.
Тепер як вправу можна спробувати змінити тип повернення та параметрів функції та пограти з ними.
Приклад №2 - Переосмислення
Нижче ми можемо мати приклад для переважаючої функції в C ++.
Код:
#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)
Вихід:
Через наведений вище код ми можемо виявити, що коли посилання на об'єкт першого класу присвоюється об'єкту, створеному відносно нашого другого класу. І тоді, коли ми отримали доступ до методу заміщення за допомогою об’єкта базового класу, ми можемо чітко помітити, що виведений вихід класу був відображений. Це поняття називається переосмисленням. Перший та Другий класи - це базовий та похідний класи відповідно. Вихід із зазначеного нижче:
Як вправу ви можете спробувати переосмислити і перевантажити функцію разом і перевірити, чи можливо, або перевірити, як виходить результат?
Як це працює?
Перевантаження: Тут немає жодного особливого моменту, про який ми могли б звернути увагу. Нам потрібно переконатися, що тип повернення або параметри всередині функції змінюються. Якщо ми розглянемо вище структуру програмування, то функції оголошуються спочатку і дається їх реалізація.
Переосмислення: Синтаксис успадкування та реалізація функцій є ключовими моментами, які слід помітити тут. У наведеному вище прикладі ми можемо помітити, що декларація функції з загальнодоступним ключовим словом зовсім інша.
А в C ++ визначення класу закінчується крапкою з двокрапкою (;), і якщо нам потрібно успадкувати базовий клас дочірньому класу, ми використовуємо символ двокрапки (:). Основна функціональність переосмислення спостерігається, коли об’єкти оголошуються та ініціалізуються для класу. Після виклику функцій за допомогою об'єктів ми зможемо чітко зрозуміти поняття переосмислення.
Переваги
- Основна перевага цих перекриття та перевантаження - економія часу.
- Економте простір пам'яті.
- Збільшується читабельність коду.
- Тут для концепції перевантаження функцій ми можемо використовувати різні однакові імена функцій для різних операцій, виключаючи використання різних імен функцій.
- Гнучкість та збереження коду стають простішими.
- У разі переосмислення дочірній клас може мати функції батьківського класу і навіть може мати власну реалізацію цієї функції.
- На об'єкти можна посилатися, а до функцій як батьківського класу, так і дочірнього класу можна отримати доступ до дочірнього класу.
Висновок
Зараз ми чітко зрозуміли поняття як перевантаження, так і перекриття. Під час перевантаження ми повинні переконатися, що різниця у перевантажених функціях існує або на основі типу повернення, або на параметрах, хоча визначення функції всередині них однакове або різне.
А у випадку переважання, оскільки це об'єктно-орієнтована концепція програмування, ми можемо використовувати лише у вигляді класів, використовуючи функціональність успадкування.
Рекомендовані статті
Це посібник із перевантаження та перекриття в C ++. Тут ми обговорюємо вступ, як це працює, синтаксис, приклади та переваги перевантаження та перезавантаження в C ++ з реалізацією коду. Ви також можете переглянути наступні статті, щоб дізнатися більше -
- Перевантаження в C ++
- Перевантаження проти перекриття
- Перевірка в PHP
- Перевищення рівня C ++
- Перевагу в Java
- Поліморфізм на Яві
- Топ-11 особливостей та переваг C ++
- Переосмислення в Python | Функція та правила