Перегрузка функций и операторов в C++
Перегрузка функции.
Перегрузка функции — это концепция программирования, согласно которой функцию можно повторно использовать с разными аргументами и типом возвращаемого значения.
Например. void print(char* szMessage) и void print(int number)
Перегрузка операторов.
Перегрузка операторов — это концепция программирования, в соответствии с которой существующие операторы могут быть перегружены таким образом, чтобы при использовании этих операторов с объектами класса операторы имели значение, соответствующее новым типам.
Например:
class NumberClass {
public:
//Перегрузка оператора присваивания
const NumberClass& operator=(const NumberClass &);
private:
int a;
int b;
int c;
};
const NumberClass& NumberClass::operator=(const NumberClass& source)
{
a = source.a;
b = source.b;
c = source.c;
вернуть *это;
}
main()
{
NumberClass A(1,1,1), B(2,2,2);
A=B; // Вызов перегруженной функции присваивания
return 0;
}
В приведенном выше примере оператор присваивания перегружается новой реализацией в классе «NumberClass».
Виртуальная функция.
Виртуальная функция — это функция-член, объявленная в базовом классе, которая может быть переопределена производным классом. Когда вы обращаетесь к объекту производного класса с помощью указателя или ссылки на базовый класс, вы можете вызвать виртуальную функцию для этого объекта и выполнить версию метода производного класса.
Пример :
class Base {
public:
virtual void print() { cout ‹‹ «\nЭто из базового класса» ‹‹ endl; };
class Derive : public Base {
public:
void print() { cout ‹‹ «\nЭто из производного класса» ‹‹ endl; };
main() {
Base* GenericClass = 0;
GenericClass = new Derive;
GenericClass-›print();
delete GenericClass;
}
Приведенные выше фрагменты кода будут вызывать версию производного класса print().
Чистая виртуальная функция
— виртуальная функция, не имеющая реализации.
— записывается как виртуальный прототип = 0;
— все производные классы должны предоставлять собственное определение.< br /> — абстрактный класс — это класс, содержащий чистую виртуальную функцию.
Вывод:
Перегрузка функций и операторов — важные концепции программирования в объектно-ориентированных языках программирования, которые обеспечивают большую гибкость для программистов при правильном использовании.