Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ป้องกันการสืบทอดคลาสใน C++ (Final Class)

เนื้อหาเหมือนบทความ ID 1004082251 (Simulating final class in C++) - จำลอง final class ด้วย virtual base class ที่มี private constructor

เทคนิค MakeFinal (ซ้ำ)

class MakeFinal {
private:
    MakeFinal() {}
    friend class FinalClass;
};

class FinalClass : virtual MakeFinal {
public:
    FinalClass() {}
};

class Derived : public FinalClass { // Error: cannot access MakeFinal::MakeFinal()
public:
    Derived() {}
};

C++11 และใหม่กว่า

ใช้คีย์เวิร์ด final โดยตรง:

class FinalClass final {
    // ไม่สามารถสืบทอดได้
};

วิธีนี้เรียบง่าย มาตรฐาน และชัดเจนกว่า idiom แบบเก่า