Nesnelerle ve bir sınıfın diğer örnekleriyle çalışırken, niteliklere erişmek bir programcı için olağan işlemlerden biridir. Bunlar için kullanılan güvenlik yöntemleri göz önüne alındığında, nesnelerde depolanan belirli verilere erişim elde etmek zor olabilir. Bu nedenle, private ve protected belirteçleri tarafından kapatılan öznitelikler, yalnızca aynı veya bir alt (korunan için) sınıfa ait bir nesneye ait bir yöntemde bir sınıf örneğinden çıkarılabilir.
Talimatlar
Aşama 1
Programınızda özniteliğine ihtiyaç duyduğunuz sınıfın bir örneğine yönelik bir nesne veya işaretçi oluşturun. Böyle bir işlem için standart yapı CMyClass myObj1'dir. Bazen bir nesneyi başlatmak için belirli parametreleri sınıf yapıcısına iletmeniz gerekir. Bu durumda, nesne oluşturma kaydı şöyle görünebilir: CMyClass myObj1 (param1, param2, param3), burada CMyClass sınıf adıdır, myObj1 oluşturulan nesnenin adıdır ve yapıcı tarafından istenen tüm parametreler listelenir parantez içinde. Bir sınıf örneğine yönelik bir işaretçi şu şekilde oluşturulur: CMyClass * pObj1 = new CMyClass (param1, param2, param3).
Adım 2
Bir özniteliği çağırmanın en basit yolu, ona programın herhangi bir yerinde doğrudan atıfta bulunmaktır. Ancak bu, yalnızca public değiştiricili bir sınıfta açıklanan açık veriler için mümkündür. Bir nesne aracılığıyla doğrudan erişim şuna benzer: myObj1.attr1, burada attr1 bu sınıfın bir özniteliğidir. Bir işaretçi için çağrı şöyle olacaktır: pObj1–> attr1.
Aşama 3
Başvurmanız gereken öznitelik gizli duruma sahipse ve özel değiştiricili bir sınıfta tanımlanıyorsa, buna erişim yalnızca aynı sınıfa ait bir yöntemden mümkündür. Sınıfın yöntemi veya işlevi, public durumuna sahip olmalıdır. Gerekli özniteliğin işlenmesinin yazıldığı sınıfa yeni bir yöntem ekleyin. Bu durumda, belirli eylemlerin gerçekleştirildiği değere bağlı olarak parametreler işleve iletilebilir. İşlevin kendisi de bir özniteliğin içeriği gibi verileri döndürebilir. Özel bir öznitelikle çalışmak için her iki işlevi de uygulayan C++ program kodu: class CMyClass {protected: int attr1; // public nitelik: void funcA1 (int param) {attr1 = param; } int funcA2 () {dönüş attr1; }};
4. Adım
Bu nedenle, özel özniteliği attr1'i ihtiyacınız olan değere ayarlamak için, daha önce oluşturulmuş nesneyi kullanarak aynı sınıftan bir yöntemi çağırın: myObj1.funcA1 (10) - benzer bir örtük işlemle, 10 değeri attr1 özniteliğine yerleştirilir. Bir sınıfın örneğine yönelik bir işaretçi ile çalışırken, benzer bir işlem şöyle görünecektir: рObj1–> funcA (10). attr1 özel özniteliğini almak ve içinde depolanan değeri bulmak için, sınıfın başka bir yöntemini çağırın: int Res = myObj1.funcA2 (). Bu durumda, Res tamsayı değişkenine gizli sınıf değişkeninin değeri atanacaktır.
Adım 5
Alt sınıfların tüm nesnelerinde korumalı durumdaki bir özniteliği çağırmanız gerekiyorsa, doğrudan değişkenine bakın. Ancak, yabancı sınıfların işlevlerinde çalışırken, korunan verilere erişim yukarıda açıklanan şekilde elde edilmelidir.
6. Adım
Bir nesne oluşturmadan bir özniteliği çağırmak için, aşağıdaki yapıyı kullanarak sınıftaki değişkenini statik olarak bildirin: static int attr1. Bu durumda, CMyClass:: attr1 girişini belirterek özniteliği program kodunda herhangi bir yerden çıkarabilirsiniz.