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

ความแตกต่างระหว่าง Object และ Class ใน C++

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;

ตารางเปรียบเทียบ

ด้านClassObject
ความหมาย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 ตัว แต่ละตัวมีข้อมูลของตัวเอง