Вступ до перевантаження та переосмислення в 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 ++ з реалізацією коду. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Перевантаження в C ++
  2. Перевантаження проти перекриття
  3. Перевірка в PHP
  4. Перевищення рівня C ++
  5. Перевагу в Java
  6. Поліморфізм на Яві
  7. Топ-11 особливостей та переваг C ++
  8. Переосмислення в Python | Функція та правила