พอยน์เตอร์ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- struct เทียบกับ class: ควรใช้แบบใด
- ตัวแปรสมาชิกและเมธอด
- คอนสตรักเตอร์และรายการเริ่มต้นสมาชิก
- พอยน์เตอร์ this และการห่อหุ้ม