สมมติว่าเรามีคลาสว่างหนึ่งคลาสใน C++ ตอนนี้ให้เราตรวจสอบว่าขนาดของมันคือ 0 หรือไม่ อันที่จริง มาตรฐานไม่อนุญาตให้อ็อบเจ็กต์ (หรือคลาส) มีขนาด 0 เนื่องจากจะทำให้อ็อบเจ็กต์ที่แตกต่างกันสองออบเจกต์มีตำแหน่งหน่วยความจำเดียวกันได้ นี่คือเหตุผลเบื้องหลังแนวคิดที่ว่าแม้แต่คลาสว่างก็ต้องมีขนาดอย่างน้อย 1 เป็นที่ทราบกันดีว่าขนาดของคลาสว่างนั้นไม่ใช่ศูนย์ โดยทั่วไปคือ 1 ไบต์ ดูตัวอย่างด้านล่าง
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include<iostream>
using namespace std;
class MyClass {
};
int main() {
cout << sizeof(MyClass);
} ผลลัพธ์
1
มันแสดงให้เห็นอย่างชัดเจนว่าอ็อบเจ็กต์ของคลาสว่างหนึ่งคลาสจะใช้เวลาอย่างน้อยหนึ่งไบต์เพื่อให้แน่ใจว่าอ็อบเจ็กต์ที่แตกต่างกันทั้งสองจะมีแอดเดรสต่างกัน ดูตัวอย่างด้านล่าง
ตัวอย่าง
#include<iostream>
using namespace std;
class MyClass {
};
int main() {
MyClass a, b;
if (&a == &b)
cout <<"Same "<< endl;
else
cout <<"Not same "<< endl;
} ผลลัพธ์
Not same
สำหรับการจัดสรรแบบไดนามิกด้วย คำหลักใหม่จะส่งคืนที่อยู่ที่แตกต่างกันด้วยเหตุผลเดียวกัน
ตัวอย่าง (C++)
#include<iostream>
using namespace std;
class MyClass {
};
int main() {
MyClass *a = new MyClass();
MyClass *b = new MyClass();
if (a == b)
cout <<"Same "<< endl;
else
cout <<"Not same "<< endl;
} ผลลัพธ์
Not same