บทนำ
Anonymous Class คือคลาสที่ไม่มีชื่อ ไม่มี Constructor (แต่มี Destructor) และไม่สามารถใช้เป็นพารามิเตอร์หรือคืนค่าของฟังก์ชันได้
Syntax
class {
// data members
// member functions
} obj1, obj2; // ประกาศออบเจกต์ทันที
คุณสมบัติ
- ไม่มีชื่อคลาส → ไม่มี Constructor
- มี Destructor สำหรับปล่อยหน่วยความจำ
- ไม่สามารถส่งเป็น argument หรือ return จากฟังก์ชันได้
- ใช้ได้เฉพาะใน scope ที่ประกาศเท่านั้น
ตัวอย่างที่ 1: สร้างออบเจกต์เดียว
#include <iostream>
using namespace std;
class {
int value;
public:
void setData(int i) { this->value = i; }
void printvalues() { cout << "Value: " << this->value << endl; }
} obj1;
int main() {
obj1.setData(10);
obj1.printvalues();
return 0;
}
ผลลัพธ์
Value: 10
ตัวอย่างที่ 2: สร้างหลายออบเจกต์
#include <iostream>
using namespace std;
class {
int value;
public:
void setData(int i) { this->value = i; }
void print() { cout << "Value: " << this->value << endl; }
} obj1, obj2;
int main() {
cout << "Object 1\n";
obj1.setData(10); obj1.print();
cout << "Object 2\n";
obj2.setData(12); obj2.print(); // ตัวอย่างต้นฉบับมี bug ใช้ obj1 แทน obj2
return 0;
}
ผลลัพธ์
Object 1 Value: 10 Object 2 Value: 12