ฉันจะเพิ่มคำตอบที่มีอยู่เพราะตอนนี้C ++ สมัยใหม่เป็นสิ่งสำคัญและได้สร้างแนวทางหลักอย่างเป็นทางการเพื่อช่วยในการตอบคำถามเช่นนี้
นี่คือส่วนที่เกี่ยวข้องจากหลักเกณฑ์:
C.2: ใช้คลาสถ้าคลาสมีค่าคงที่ ใช้โครงสร้างหากสมาชิกข้อมูลสามารถเปลี่ยนแปลงได้อย่างอิสระ
ค่าคงที่เป็นเงื่อนไขทางตรรกะสำหรับสมาชิกของอ็อบเจ็กต์ที่คอนสตรัคเตอร์ต้องสร้างขึ้นเพื่อให้ฟังก์ชันสมาชิกสาธารณะถือว่า หลังจากสร้างค่าคงที่แล้ว (โดยทั่วไปโดยตัวสร้าง) ทุกฟังก์ชันของสมาชิกสามารถเรียกใช้สำหรับอ็อบเจ็กต์ได้ ค่าคงที่สามารถระบุได้อย่างไม่เป็นทางการ (เช่นในความคิดเห็น) หรือมากกว่านั้นอย่างเป็นทางการโดยใช้ Expects
หากสมาชิกข้อมูลทั้งหมดสามารถแตกต่างกันไปโดยไม่ขึ้นกับกันก็จะไม่มีค่าคงที่เป็นไปได้
หากคลาสมีข้อมูลส่วนตัวผู้ใช้จะไม่สามารถเริ่มต้นอ็อบเจ็กต์ได้อย่างสมบูรณ์โดยไม่ต้องใช้คอนสตรัคเตอร์ ดังนั้นตัวกำหนดคลาสจะให้ตัวสร้างและต้องระบุความหมาย นี่หมายถึงความจำเป็นที่แน่นอนในการกำหนดค่าคงที่
การบังคับใช้
มองหาโครงสร้างที่มีข้อมูลส่วนตัวและคลาสที่มีสมาชิกสาธารณะ
ตัวอย่างโค้ดที่ให้:
struct Pair { // the members can vary independently
string name;
int volume;
};
// but
class Date {
public:
// validate that {yy, mm, dd} is a valid date and initialize
Date(int yy, Month mm, char dd);
// ...
private:
int y;
Month m;
char d; // day
};
Class
es ทำงานได้ดีสำหรับสมาชิกที่มาจากกันและกันหรือสัมพันธ์กัน นอกจากนี้ยังสามารถช่วยในการตรวจสอบสติสัมปชัญญะเมื่อมีการสร้างอินสแตนซ์ Struct
ทำงานได้ดีกับการมี "ถุงข้อมูล" โดยที่ไม่มีอะไรพิเศษเกิดขึ้นจริง ๆ แต่สมาชิกก็มีเหตุผลที่จะรวมกลุ่มกัน
จากสิ่งนี้ทำให้รู้สึกว่าclass
มีอยู่เพื่อรองรับการห่อหุ้มและแนวคิดการเข้ารหัสอื่น ๆ ที่เกี่ยวข้องซึ่งstruct
ไม่มีประโยชน์มากนักสำหรับ