สมมติว่าเรามีคลาสว่างหนึ่งคลาสใน 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