Trang tài liệu
Khóa học C++ nền tảng
Chương 13. Idiom trong C++
Đặc ngữ Pimpl

Đặ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.