Mevcut cevaplara bir şeyler ekleyeceğim çünkü modern C ++ artık bir şey ve bu gibi sorulara yardımcı olmak için resmi Temel Yönergeler oluşturuldu.
İşte yönergelerden alakalı bir bölüm:
C.2: Sınıfın değişmezliği varsa sınıfı kullanın; veri üyeleri bağımsız olarak değişiklik gösterebilirse struct kullanın
Bir değişmez, bir nesnenin üyeleri için, bir yapıcının genel üye işlevlerinin üstlenmesi için kurması gereken mantıksal bir koşuldur. Değişmez oluşturulduktan sonra (tipik olarak bir kurucu tarafından), nesne için her üye işlev çağrılabilir. Bir değişmez, gayri resmi olarak (örneğin bir yorumda) veya Beklentiler kullanılarak daha resmi olarak ifade edilebilir.
Tüm veri üyeleri birbirinden bağımsız olarak değişebiliyorsa, değişmezlik mümkün değildir.
Bir sınıfın herhangi bir özel verisi varsa, kullanıcı bir yapıcı kullanmadan bir nesneyi tamamen başlatamaz. Bu nedenle, sınıf tanımlayıcı bir kurucu sağlayacaktır ve anlamını belirtmesi gerekir. Bu, tanımlayıcının bir değişmezi tanımlaması gerektiği anlamına gelir.
Uygulama
Tüm verileri özel ve genel üyeleri olan sınıfları içeren yapıları arayın.
Verilen kod örnekleri:
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, örneğin birbirlerinden türetilmiş veya birbiriyle ilişkili üyeler için iyi çalışır. Ayrıca, örnekleme üzerine akıl sağlığı kontrolüne de yardımcı olabilirler. Struct
Gerçekten özel bir şeyin olmadığı, ancak üyelerin mantıksal olarak bir araya getirilmesinin mantıklı olduğu "veri torbalarına" sahip olmak için iyi çalışıyorlar.
Buradan, class
kapsüllemeyi ve diğer ilgili kodlama kavramlarını desteklemek için var olduğu, ancak struct
bunlar için pek yararlı olmadığı mantıklıdır .