استفاده کردن از مفهوم CRTP (Curiously Recurring Template Pattern) در C++ برای ارث بری از کلاس های قالب
توضیحات:
الگوی CRTP یک الگوی طراحی در C++ است که اجازه میدهد کلاسی از یک کلاس قالب دیگر ارث بری کند و از قالب خود برای ارث بری استفاده کند. این الگو به برنامه نویس امکان میدهد که ویژگیها و روشهای کلاس پایه را به کلاس مشتق شده ارث برده و از آنها استفاده کند.
برای استفاده از CRTP، ابتدا باید یک کلاس قالب تعریف کنید که به عنوان کلاس پایه برای کلاسهای مشتق شده عمل میکند. سپس کلاس مشتق شده باید خود را به عنوان قالب به کلاس پایه ارسال کند.
در زیر یک مثال ساده از استفاده از CRTP در C++ آورده شده است:
#include <iostream>
template <typename Derived>
class Base {
public:
void print() {
static_cast<Derived*>(this)->printDerived();
}
};
class Derived : public Base<Derived> {
public:
void printDerived() {
std::cout << "I am a derived class" << std::endl;
}
};
int main() {
Derived d;
d.print();
return 0;
}در این مثال، کلاس Base یک کلاس قالب است که یک تابع print دارد که از کلاس مشتق شده برای چاپ پیام استفاده میکند. کلاس Derived از کلاس Base ارث بری کرده و تابع printDerived را پیاده سازی کرده است.
در تابع print کلاس Base، از static_cast برای تبدیل this به نوع مشتق شده استفاده شده است و سپس تابع printDerived از کلاس مشتق شده فراخوانی میشود.
در تابع main، یک شی از کلاس Derived ایجاد شده و تابع print بر روی آن فراخوانی میشود که منجر به چاپ پیام “I am a derived class” میشود.
استفاده از CRTP در C++ به برنامه نویس این امکان را میدهد که کدهای تکراری را کاهش داده و کد را بهبود بخشید. این الگو به برنامه نویس امکان ارث بری از کلاسهای قالب و استفاده از ویژگیها و روشهای آنها را میدهد.
موفق باشید
A.J
پست های مرتبط:
فروشگاه سورسا:
سورسا ، یک خانواده!
شما میتوانید از سورس های آماده به راحتی و با کپی پیست در پروژه خود استفاده بفرمایید
بله! سورسا به عنوان اولین و برترین مرجع سورس کد های آماده، تمامی سورس کد ها در زبان های مختلف را به صورت رایگان در اختیار شما قرار میدهد.
اگر سورس مد نظر شما تفاوتی با سورس فعلی دارد یا اینکه درخواست سورس دیگری را دارید میتوانید با کارشناسان سورسا در ارتباط باشید.
سورسا به عنوان مرجع سورس در تلاش است سورس کد ها و آموزش های تمامی زبان های برنامه نویسی مانند GO C++ Python C PHP SQL JS و… را تحت پوشش قرار داد


