Ne zaman C sınıfı üyeleri başvurmak için nokta, ok, ya da bir çift kolon kullanırım ?
Gelen diğer C türevi dillere (Java veya C#) C , ilk başta çok kafa karıştırıcı bir C üç yol başvurmak için üye sınıfı: a::b
, a.b
, a->b
. Bu operatörlerinden biri olan kullanabilirim?
CEVAP
Üç farklı operatörler C kullanır erişimi üyelerinin bir sınıf veya sınıf nesnesi, yani çift kolon ::
nokta .
ve ok ->
kullanılan üç farklı senaryolar, her zaman iyi tanımlanmış. Bilerek bu sağlar size hemen biliyorum çok şey hakkında a
b
sadece bakarak a::b
, a.b
a->b
, sırasıyla, herhangi bir kod bakın.
a::b
b
sınıfının bir üyesi ise sadece kullanılan bir ad)a
. O, bu durumdaa
Her zaman bir sınıf adını (veya ad) olacak.a.b
b
nesne (ya da bir nesneye referans) üyesi ise sadece kullanılıra
. Yania.b
,a
Her zaman gerçek bir nesne olacak (veya bir nesne için bir başvuru) bir sınıf.a->b
aslen(*a).b
steno gösterim. Ancak,->
tek üye erişim operatörleri aşırı yüklenmiş olabilir, eğer öyleysea
bir nesne bir sınıf aşırı yüklemeoperator->
(sık bu tür akıllı işaretçiler ve kullanımına, anlamı her ne olursa olsun, sınıf tasarımcısı uygulanmaktadır. Sonuç: eğera
bir gösterici nesnesinin bir üyesi olacak isea->b
işaretçia
ifade eder. Ancak,a
Bu operatör aşırı yükleme, bir sınıfın bir nesnesi, sonra da aşırı yüklenmiş operatör fonksiyonu varsaoperator->()
çağrılan alır.
Küçük baskı:
C , çeşitleri class
,struct
union
olarak ilan etti< . em ^"sınıf tipi". Yukarıdaki üçü ifade eder.Başvurular, anlamsal olarak, diğer ad nesneleri, yani eklememeliydim< . em ^"ya da bir işaretçi başvuru"#3 de. Ancak, işaretçiler, başvurular ( T*&
) nadiren kullanılan bu yana bu yararlı daha fazla kafa karıştırıcı olur diye düşündüm.Nokta ve ok operatörlerinin nesnenin üyeleri olmadığı halde bir nesne statik sınıf üyeleri başvurmak için kullanılır. (Bu işaret için Oli için teşekkürler!)
E çift kolon " ne anlama geliyor;::&qu...
Nasıl bir çift için bir ondalık nokta ...
Parantez, nokta,, = (fonksiyonlar), pa...
Sözde elemanlar için tek veya çift kol...
Ne zaman fabrika kullanırım ve ne zama...