Class ใน C++
Class เป็นบล็อกสร้างโค้ดพื้นฐานสำหรับ Object-Oriented Programming (OOP) เป็น User-defined type ที่รวมข้อมูล (Data Members) และพฤติกรรม (Member Functions) ไว้ด้วยกัน
ลักษณะสำคัญของ Class
- เป็น Blueprint/Template สำหรับสร้าง Object
- กำหนด Data Members (ตัวแปร) และ Member Functions (เมธอด)
- เข้าถึงผ่าน Access Specifiers:
public,private,protected - ไม่จัดสรรหน่วยความจำเมื่อประกาศ (แค่ định nghĩaโครงสร้าง)
- สร้างด้วยคีย์เวิร์ด
class
Syntax
class ClassName {
// Access specifier
public:
// Data members
int data;
// Member functions
void function() { ... }
private:
int hiddenData;
};
ตัวอย่าง: Class Employee
class Employee {
public:
string name;
int age;
string title;
void draw_salary() { /* ... */ }
void get_promotion() { /* ... */ }
};
Object ใน C++
Object คือ Instance (ตัวจริง) ของ Class เมื่อสร้าง Object จะมีหน่วยความจำจริงสำหรับ Data Members
ลักษณะสำคัญของ Object
- สร้างจาก Class (Instantiation)
- มีหน่วยความจำจริงสำหรับ Data Members
- แต่ละ Object มีค่า Data Members แยกจากกัน
- เข้าถึง Member ด้วยตัวดำเนินการ
.(dot operator) - สร้างด้วย:
ClassName objectName;
ตัวอย่างการสร้างและใช้ Object
Employee emp1; // สร้าง Object emp1
emp1.name = "Somchai"; // เข้าถึง data member
emp1.age = 30;
emp1.draw_salary(); // เรียก member function
Employee emp2; // Object อีกตัว
emp2.name = "Suda"; // ข้อมูลต่างจาก emp1
emp2.age = 25;
ตารางเปรียบเทียบ
| ด้าน | Class | Object |
|---|---|---|
| ความหมาย | Blueprint / แม่แบบ | Instance / ตัวจริง |
| หน่วยความจำ | ไม่จัดสรร (แค่ định nghĩa) | จัดสรรจริงเมื่อสร้าง |
| จำนวน | มี 1 คลาส | สร้างได้หลาย Object |
| ข้อมูล | โครงสร้างข้อมูล | ค่าข้อมูลจริง |
| คีย์เวิร์ด | class | ไม่มี (ใช้ชื่อคลาส) |
| การเข้าถึง | ผ่าน Object | โดยตรงด้วย . operator |
Access Control (การควบคุมการเข้าถึง)
- public: เข้าถึงได้จากทุกที่
- private: เข้าถึงได้เฉพาะใน Class (Default)
- protected: เข้าถึงได้ใน Class และ Derived Class
Inline Functions
- Member functions ที่เขียนภายใน Class เป็น inline อัตโนมัติ
- Inline: Compiler แทนที่การเรียกฟังก์ชันด้วยโค้ดจริง → ลด Overhead
- ฟังก์ชันทั่วไปทำให้เป็น inline ได้ด้วยคีย์เวิร์ด
inline
สรุป
Class = แม่แบบ (Design), Object = ผลิตภัณฑ์ (Instance) คลาสกำหนด "ว่ามีอะไรบ้าง" อ็อบเจ็กต์คือ "อันนั้นมีค่าอะไร" - คลาสเดียว สร้างอ็อบเจ็กต์ได้มากกว่า 1 ตัว แต่ละตัวมีข้อมูลของตัวเอง