ตัวแปรสมาชิกและเมธอด
ประกาศตัวแปรสมาชิก เขียนเมธอดสมาชิก และอ้างอิงเมธอดผ่านอินสแตนซ์
ตัวแปรสมาชิกและเมธอด เป็นบทเรียน C++ Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C++ Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน
สมาชิกของคลาส
คลาสสามารถประกอบด้วย:
- ตัวแปรสมาชิก (ข้อมูล ซึ่งบางครั้งเรียกว่าฟิลด์)
- ฟังก์ชันสมาชิก (เมธอด)
- ชนิดข้อมูลซ้อนภายใน (ชื่อแทนชนิดข้อมูล ค่าแจกแจง คลาส)
- สมาชิกสถิต (ใช้ร่วมกันโดยอินสแตนซ์ทั้งหมด)
การประกาศตัวแปรสมาชิก
ประกาศตัวแปรเหล่านี้ในเนื้อหาคลาส ใช้ตัวเริ่มต้นค่าเริ่มต้นภายในคลาสของ C++11 เพื่อให้โค้ดเป็นระเบียบ
class Person {
std::string name_ = "unknown";
int age_ = 0;
public:
// ...
};หลักการตั้งชื่อ
หลักการทั่วไปสำหรับสมาชิกส่วนตัว:
- ขีดล่างต่อท้าย:
name_ - นำหน้าด้วย
m_:m_name - ชื่อทั่วไปที่มี
this->โดยปริยาย
เลือกแบบใดแบบหนึ่งและใช้ให้สม่ำเสมอ
การกำหนดเมธอดภายในคลาส
เมธอดสั้น ๆ สามารถกำหนดแบบอินไลน์ในเนื้อหาคลาสได้ และจะเป็นอินไลน์โดยปริยาย
class Counter {
int n_ = 0;
public:
void increment() { ++n_; }
int value() const { return n_; }
};การกำหนดเมธอดภายนอกคลาส
โดยปกติเมธอดที่ยาวกว่าจะกำหนดไว้นอกคลาส ซึ่งมักอยู่ในไฟล์ .cpp ใช้ตัวดำเนินการแก้ไขขอบเขต ::
// header
class Logger {
public:
void log(const std::string& msg);
};
// implementation
void Logger::log(const std::string& msg) {
std::cout << "[LOG] " << msg << "\n";
}การเรียกเมธอด
ใช้ไวยากรณ์จุดกับออบเจ็กต์ และใช้ไวยากรณ์ลูกศรกับพอยน์เตอร์
Counter c;
c.increment();
Counter* p = &c;
p->increment();เมธอด Const
เมธอดที่ไม่แก้ไขออบเจ็กต์ควรระบุเป็น const เมธอดเหล่านี้สามารถเรียกใช้กับอินสแตนซ์ const ได้
class Counter {
int n_ = 0;
public:
int value() const { return n_; } // does not modify *this
};สมาชิกสถิต
สมาชิกสถิติเป็นของคลาส ไม่ใช่ของอินสแตนซ์ ประกาศด้วย static และกำหนดไว้ในไฟล์ต้นฉบับ
class Logger {
public:
static int messageCount;
static void log(const std::string& msg);
};
int Logger::messageCount = 0;ตัวระบุการเข้าถึง
ระดับการเข้าถึงสามระดับ:
public— เข้าถึงได้จากทุกที่private— เข้าถึงได้เฉพาะภายในคลาสprotected— เข้าถึงได้ภายในคลาสและคลาสที่สืบทอด
การห่อหุ้มในการใช้งานจริง
ทำให้สมาชิกข้อมูลเป็นส่วนตัว แล้วเปิดให้เข้าถึงผ่านเมธอดที่บังคับใช้ invariant
class Temperature {
double celsius_ = 0.0;
public:
void setCelsius(double c); // validates range
double celsius() const { return celsius_; }
double fahrenheit() const { return celsius_ * 9.0/5.0 + 32; }
};เมธอดและฟังก์ชันอิสระ
ไม่จำเป็นต้องทำทุกอย่างให้เป็นเมธอด หากฟังก์ชันใช้เพียงอินเทอร์เฟซสาธารณะ ควรใช้ฟังก์ชันอิสระ เพราะจะลดการเชื่อมโยง
ตรวจสอบความเข้าใจ
คีย์เวิร์ดใดใช้ระบุว่าฟังก์ชันสมาชิกไม่แก้ไขออบเจ็กต์
สรุปทบทวน
ตัวแปรสมาชิกเก็บสถานะของแต่ละอินสแตนซ์ ส่วนเมธอดทำงานกับสถานะนั้น ให้ระบุเมธอดที่ไม่แก้ไขออบเจ็กต์เป็น const ทำให้ข้อมูลเป็นส่วนตัว และเปิดเผยพฤติกรรมผ่านอินเทอร์เฟซสาธารณะที่มีขนาดเล็กและตั้งใจออกแบบ
คำถามที่พบบ่อย
บทเรียน “ตัวแปรสมาชิกและเมธอด” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตัวแปรสมาชิกและเมธอด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C++ Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตัวแปรสมาชิกและเมธอด”
ประกาศตัวแปรสมาชิก เขียนเมธอดสมาชิก และอ้างอิงเมธอดผ่านอินสแตนซ์ คุณปฏิบัติ C++ Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C++ Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C++ Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “ตัวแปรสมาชิกและเมธอด” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C++ Academy นี้ได้ไหม
ได้ บทเรียน C++ Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- struct เทียบกับ class: ควรใช้แบบใด
- ตัวแปรสมาชิกและเมธอด
- คอนสตรักเตอร์และรายการเริ่มต้นสมาชิก
- พอยน์เตอร์ this และการห่อหุ้ม