Đặc ngữ Pimpl
Đặc ngữ Pimpl (Con trỏ để triển khai), còn được gọi là dữ liệu lớp riêng, tường lửa trình biên dịch hoặc lớp xử lý, là một kỹ thuật được sử dụng trong C++ để ẩn chi tiết triển khai của lớp bằng cách sử dụng khai báo chuyển tiếp tới cấu trúc hoặc lớp riêng , giữ cho giao diện chung của lớp sạch sẽ và giảm các phụ thuộc thời gian biên dịch.
Triển khai
Đây là một ví dụ đơn giản minh họa đặc ngữ Pimpl:
my_class.h
class MyClass_Impl; // khai báo chuyển tiếp
class MyClass
{
public:
MyClass();
~MyClass();
void some_method();
private:
MyClass_Impl *pimpl; //con trỏ đến việc triển khai
};
my_class.cpp
#include "my_class.h"
#include <iostream>
class MyClass_Impl // việc triển khai thực tế
{
public:
void some_method()
{
std::cout << "Implementation method called!" << std::endl;
}
};
MyClass::MyClass() : pimpl(new MyClass_Impl()) {} // hàm tạo
MyClass::~MyClass() { delete pimpl; } // hàm hủy
void MyClass::some_method()
{
pimpl->some_method(); // ủy quyền đến triển khai
}
Bây giờ, tất cả các phương thức công khai của MyClass sẽ ủy quyền các lệnh gọi cho các phương thức tương ứng của MyClass_Impl. Bằng cách này, bạn có thể ẩn các chi tiết triển khai lớp, giảm các phụ thuộc thời gian biên dịch và dễ dàng bảo trì mã code của bạn.