در این قسمت تیم کدگیت را با آموزش Function Overriding در سی پلاس پلاس همراهی کنید. در ابتدای این آموزش به توضیح Overriding میپردازیم سپس شرایط پیاده سازی Function Overriding در سی پلاس پلاس را بیان کرده، در پایان جلسه نیز یک مثال را پیاده سازی میکنیم. پیش نیاز این آموزش شامل موارد زیر میباشد:
Function Overriding در سی پلاس پلاس
در یک کلاس اگر یک تابع همنام تابعی که در کلاس پدر خود وجود دارد،بنویسیم به آن override میگویند. به زبان دیگر اگر کلاس فرزند تابعی را پیاده سازی کند که به نوعی در کلاس پدر وجود داشته است، overriding در سی پلاس پلاس انجام داده ایم. شروط overriding به ترتیب زیر است:
- نام توابع یکسان باشد
- ورودی و خروجی توابع یکسان باشد
- توابع override شده حتما باید در دو کلاس متفاوت باشند و بین کلاس ها رابطه ارث بری وجود دارد.
مثال Function Overriding در سی پلاس پلاس
کلاسی به نام Parent داریم و کلاس دیگری به نام Child ساختهایم به صورتی که Child از Parent ارثبری کند. کد این مثال به صورت زیر میباشد:
// Base class
class Parent
{
public:
void print()
{
cout << "The Parent print function was called" << endl;
}
};
// Derived class
class Child : public Parent
{
public:
// definition of a member function already present in Parent
void print()
{
cout << "The child print function was called" << endl;
}
};
//main function
int main()
{
//object of parent class
Parent obj1;
//object of child class
Child obj2 = Child();
// obj1 will call the print function in Parent
obj1.print();
// obj2 will override the print function in Parent
// and call the print function in Child
obj2.print();
return 0;
}
همانطور که در کد بالا میبینید تابعی به نام Print هم در کلاس Parent و هم در کلاس Child آمده است. به عبارت دیگر تابع Print در کلاس فرزند Override شده است. در تابع Main هر دو کلاس را ساخته و نحوه دسترسی به هر تابع را نشان دادهایم.
خروجی کد بالا به صورت زیر میباشد:
The Parent print function was called
The child print function was called