(program süresince değerini değiştirebilir)
Yoksa 'bir şeyin örneği' kesinlikle sınıflar ve nesnelerle mi ilgili? Eğer öyleyse, C ++ söz konusu olduğunda 'değişken' kavramını nasıl tanımlarsınız?
(program süresince değerini değiştirebilir)
Yoksa 'bir şeyin örneği' kesinlikle sınıflar ve nesnelerle mi ilgili? Eğer öyleyse, C ++ söz konusu olduğunda 'değişken' kavramını nasıl tanımlarsınız?
Yanıtlar:
Gibi bildiğim kadarıyla, ilkel türleri çağrı değerlerine doğru örnekleri (örneğin bkz bu tür "C ++ Tip Sistemi" Visual Studio kılavuzu gelen, ama yine de başka bir kaynaktan arıyorum) Bu terim olduğuna inanıyoruz rağmen, çoğunlukla nesneler tartışılırken kullanılır. Bir nesne, C sınıfında veya alt sınıflarından birinde tanımlanan bir yapıcıdan oluşturulmuşsa, C sınıfının bir örneğidir.
C ++ 'da bir değişken çalışma zamanı kavramı değildir. Derleyicinizin içinde, değişkenin adı ile soyut (sabit değilse değiştirilebilir) konumu arasında sözcüksel bir bağ olarak bulunur. Bir program derlendikten sonra, değişkenler artık orada değildir. Bunun yerine veriler yazmaçlarda, bellekte vb. Okunur ve yazılır.
int
. C ++ standardı, değişken bildirimlerin ne yaptığı hakkında konuşurken ilkel tipler ile ilkel olmayan tipler arasında bir ayrım yapmaz. Böylece T t;
, T
ne tür T
olursa olsun , bir tür nesne bildirir .
Yoksa 'bir şeyin örneği' kesinlikle sınıflar ve nesnelerle mi ilgili? Eğer öyleyse, C ++ söz konusu olduğunda 'değişken' kavramını nasıl tanımlarsınız?
C ++ için olabildiğince kısaca koymak
Açık olmak gerekirse:
malloc()
düzenlenen, ancak başlatılmamış bir arabellek hakkında konuştuğunuzda bir noktanız var : henüz nesne olmayan bir hafıza alanı. Aynı şekilde, açıkça tahrip olmuş bir nesne: Artık nesne olmayan bir hafıza bölgesi.
Peki "doğru" ne demek?
Bu konuda çok katı olmak istiyorsak, aşağıdakileri ayırt etmeliyiz:
Bu durumda bir değişkenin - bir ifade olması - bir türü olacaktır. Değeri - bahsettiği nesne - bir sınıfın örneğidir. Değişkenin türü ve nesnenin sınıfı genellikle aynı şey değildir; değişkenin statik türü , nesnelerin çalışma zamanı sınıflarına bir üst sınır koyar , böylece sınıflar türe karşılık gelen sınıfın bir alt türü olmalıdır .
O büyük ağzı sürekli tekrarlamak ister misin? Heck hayır. Ne kadar katı ve gevşek konuşmak istiyorsak, bağlama bağlıdır. Çoğu zaman "değişkenin bu türden bir örnek olduğunu" söylemekte sorun yoktur. Gerçekte olan şey, nesneyi ve çalışma zamanı sınıfının bir üst sınıfını ifade etmek için değişkeni ve türü metonimik olarak kullanmamızdır.
Tüm hayatınızı saflık ve sofizm içinde geçirmek istemiyorsanız ... evet.
Benzersiz olarak tanımlanmış bir şeyi her tuttuğunuzda , somutlaştırdığınız diğer benzersiz tanımlanabilir şeyleri taklit etmek için bir kullanım sağlar .
Bu örneklemelerin bazıları daha doğru adlara sahip olabilir, ancak genel olarak bu işe yarar.
Birçok kişi sınıf örnekleri için "örnek" ayırır. Bunu C ++ 'da yaparsanız, bir değişken bir sınıf örneği, bir örneğe başvuru, bir örneğe işaretçi ya da ilkel bir tür olabilir (büyük olasılıkla yapıları bu bağlamdaki sınıflar olarak saymış olursunuz) tamamen aynı). Java veya Objective-C'de değişkenler asla örnek değil, büyük olasılıkla örneklere referans olur.
Unuttum: Kısa bir süre için, bir C ++ işaretçisi ham belleğe bir işaretçi olabilir, örneğin yapıcı çalışmaya başlamadan önce "this". Muhtemelen bu noktaya henüz * örnek demezdiniz.