0Pricing
C++ Academy · บทเรียน

พอยน์เตอร์ this และการห่อหุ้ม

ใช้พอยน์เตอร์ this และบังคับใช้การห่อหุ้มด้วยการเข้าถึงแบบ private และ public

พอยน์เตอร์ this และการห่อหุ้ม เป็นบทเรียน C++ Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C++ Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

this คืออะไร

ภายในเมธอดสมาชิกที่ไม่ใช่แบบสแตติก this คือพอยน์เตอร์โดยนัยที่ชี้ไปยังออบเจ็กต์ปัจจุบัน ใช้เพื่อแยกความกำกวม หรือใช้ส่งคืนรีเฟอเรนซ์

class Counter {
    int n_ = 0;
public:
    Counter& add(int x) {
        n_ += x;       // implicit this
        return *this;  // chain calls
    }
};

การเข้าถึงโดยนัย

โดยทั่วไปคุณไม่จำเป็นต้องเขียน this-> ระบบจะค้นหาชื่อสมาชิกให้อัตโนมัติ ดังนั้น this->n_ และ n_ จึงเทียบเท่ากัน

กรณีที่จำเป็นต้องใช้ this->

ใช้ this-> เมื่อพารามิเตอร์มีชื่อบังสมาชิก หรือเมื่อการค้นหาชื่อในเทมเพลตต้องการความช่วยเหลือในการค้นหาสมาชิกที่สืบทอดมา

class Person {
    std::string name_;
public:
    void setName(const std::string& name) {
        this->name_ = name;  // or name_ = name;
    }
};

การส่งคืน *this เพื่อการเรียกต่อเนื่อง

ส่งคืน *this เพื่อรองรับส่วนติดต่อแบบเรียกต่อเนื่อง

class StringBuilder {
    std::string s_;
public:
    StringBuilder& append(const std::string& part) {
        s_ += part;
        return *this;
    }
};

StringBuilder sb;
sb.append("Hello, ").append("World!");

this ในเมธอด const

ภายในเมธอด const this จะมีชนิดเป็น const ClassName* คุณไม่สามารถแก้ไขสมาชิกผ่านพอยน์เตอร์นี้ได้

การห่อหุ้ม: แนวคิดสำคัญ

การห่อหุ้มหมายถึงการซ่อนสถานะภายในและเปิดเผยเฉพาะการดำเนินการที่ปลอดภัย ทำข้อมูลให้เป็น private และเปิดเผยเมธอด public ที่มีเจตนาชัดเจน

class Stack {
    std::vector<int> data_;     // hidden
public:
    void push(int v) { data_.push_back(v); }
    int  pop()       { int v = data_.back(); data_.pop_back(); return v; }
    bool empty() const { return data_.empty(); }
};

เหตุใดจึงต้องใช้การห่อหุ้ม

การห่อหุ้มช่วยให้คุณ:

  • เปลี่ยนรูปแบบการแทนค่าภายในได้โดยไม่ทำให้โค้ดที่เรียกใช้งานเสียหาย
  • บังคับใช้เงื่อนไขคงที่ไว้ในจุดเดียว
  • ตรวจสอบข้อมูลเข้าที่ขอบเขตของระบบ
  • วิเคราะห์สถานะของออบเจ็กต์เฉพาะจุดได้

ส่วนติดต่อสาธารณะ = ข้อตกลง

ส่วนติดต่อสาธารณะคือคำสัญญาที่มีต่อโค้ดที่เรียกใช้งาน ควรมีขนาดเล็ก มีเจตนาชัดเจน และมีความเสถียร ส่วนรายละเอียดการทำงานควรเป็น private

เมธอดอ่านค่าและกำหนดค่า

เป็นรูปแบบที่พบได้บ่อย แต่ก็ใช้มากเกินไปได้ง่าย หลีกเลี่ยงการสร้างเมธอดอ่านค่าและกำหนดค่าให้สมาชิกทุกตัว เพราะจะทำลายการห่อหุ้ม ควรเปิดเผย การดำเนินการ ไม่ใช่ฟิลด์

ความถูกต้องของ const อีกครั้ง

ทำเครื่องหมายเมธอดที่อ่านข้อมูลอย่างเดียวทุกเมธอดด้วย const โค้ดที่เรียกใช้งานจะทราบว่าเมธอดใดปลอดภัยสำหรับอินสแตนซ์ const และคอมไพเลอร์จะบังคับใช้กฎนี้

ฟังก์ชันและคลาส friend

คีย์เวิร์ด friend อนุญาตให้ฟังก์ชันหรือคลาสอื่นเข้าถึงสมาชิก private ได้ ควรใช้เท่าที่จำเป็น เพราะทำให้การเชื่อมโยงระหว่างส่วนต่าง ๆ แน่นแฟ้นขึ้น

class Account {
    double balance_;
    friend void transfer(Account& a, Account& b, double amount);
};

ตรวจสอบความเข้าใจ

ชนิดของ this ภายในเมธอดที่ประกาศเป็น void f() const ของคลาส Foo คืออะไร

สรุปทบทวน

this ชี้ไปยังออบเจ็กต์ปัจจุบันภายในเมธอดที่ไม่ใช่แบบสแตติก ใช้เพื่อการเรียกต่อเนื่อง (return *this) และการแยกความกำกวม ห่อหุ้มสถานะด้วยข้อมูล private และส่วนติดต่อสาธารณะที่มีขนาดเล็กและมีเจตนาชัดเจน

คำถามที่พบบ่อย

บทเรียน “พอยน์เตอร์ this และการห่อหุ้ม” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “พอยน์เตอร์ this และการห่อหุ้ม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C++ Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “พอยน์เตอร์ this และการห่อหุ้ม”

ใช้พอยน์เตอร์ this และบังคับใช้การห่อหุ้มด้วยการเข้าถึงแบบ private และ public คุณปฏิบัติ C++ Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C++ Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C++ Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “พอยน์เตอร์ this และการห่อหุ้ม” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C++ Academy นี้ได้ไหม

ได้ บทเรียน C++ Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. struct เทียบกับ class: ควรใช้แบบใด
  2. ตัวแปรสมาชิกและเมธอด
  3. คอนสตรักเตอร์และรายการเริ่มต้นสมาชิก
  4. พอยน์เตอร์ this และการห่อหุ้ม
← กลับไปที่ C++ Academy