Kapag nagtatrabaho sa mga bagay at iba pang mga pagkakataon ng isang klase, ang pag-access sa mga katangian ay isa sa karaniwang operasyon para sa isang programmer. Ang pagkakaroon ng pag-access sa ilang data na nakaimbak sa mga bagay ay maaaring maging mahirap, naibigay sa mga pamamaraan ng seguridad na ginamit para sa kanila. Kaya, ang mga katangiang sarado ng pribado at protektadong mga mapagpahiwatig ay maaaring makuha mula sa isang halimbawa ng klase lamang sa isang pamamaraan na pagmamay-ari ng isang bagay ng pareho o isang bata (para sa protektado) na klase.
Panuto
Hakbang 1
Lumikha ng isang bagay o isang pointer sa isang halimbawa ng klase na ang katangian na kailangan mo sa iyong programa. Ang karaniwang konstruksyon para sa naturang operasyon ay CMyClass myObj1. Minsan, upang mapasimulan ang isang bagay, dapat mong ipasa ang ilang mga parameter sa tagabuo ng klase. Sa kasong ito, maaaring ganito ang record ng paglikha ng object: CMyClass myObj1 (param1, param2, param3), kung saan ang CMyClass ang pangalan ng klase, myObj1 ang pangalan ng bagay na nilikha, at lahat ng mga parameter na hiniling ng tagapagbuo ay nakalista sa mga braket. Ang isang pointer sa isang halimbawa ng klase ay nilikha tulad ng sumusunod: CMyClass * pObj1 = bagong CMyClass (param1, param2, param3).
Hakbang 2
Ang pinakasimpleng paraan upang tumawag sa isang katangian ay upang direktang mag-refer dito saanman sa programa. Gayunpaman, posible lamang ito para sa bukas na data na inilarawan sa isang klase na may modifier ng publiko. Ang direktang pag-access sa pamamagitan ng isang bagay ay ganito ang hitsura: myObj1.attr1, kung saan ang attr1 ay isang katangian ng klase na ito. Para sa isang pointer, ang tawag ay: pObj1–> attr1.
Hakbang 3
Kung ang katangiang kailangan mong mag-refer ay may nakatagong katayuan at inilarawan sa isang klase na may pribadong pagbabago, kung gayon ang pag-access dito ay posible lamang mula sa isang pamamaraan na kabilang sa parehong klase. Ang pamamaraan o pag-andar ng klase ay dapat magkaroon ng pampublikong katayuan sa publiko. Magdagdag ng isang bagong pamamaraan sa klase, kung saan isulat ang pagproseso ng kinakailangang katangian. Sa kasong ito, ang mga parameter ay maaaring maipasa sa pagpapaandar, depende sa halaga kung saan gumanap ang ilang mga pagkilos. Ang pagpapaandar mismo ay maaari ring ibalik ang data, tulad ng nilalaman ng isang katangian. C ++ program code na nagpapatupad ng parehong pag-andar para sa pagtatrabaho sa isang pribadong katangian: class CMyClass {protektado: int attr1; // pampublikong katangian: void funcA1 (int param) {attr1 = param; } int funcA2 () {return attr1; }};
Hakbang 4
Kaya, upang maitakda ang pribadong katangian ng attr1 sa halagang kailangan mo, tumawag sa isang paraan ng parehong klase gamit ang dating nilikha na bagay: myObj1.funcA1 (10) - sa pamamagitan ng isang katulad na implicit na operasyon, ang halagang 10 ay inilalagay sa attr1 na katangian. Kapag nagtatrabaho kasama ang isang pointer sa isang halimbawa ng isang klase, magiging katulad nito ang isang katulad na operasyon: рObj1–> funcA (10). Upang makuha ang pribadong katangian ng attr1 at alamin ang halagang nakaimbak dito, tumawag sa isa pang pamamaraan ng klase: int Res = myObj1.funcA2 (). Sa kasong ito, ang integer variable Res ay itatalaga ang halaga ng nakatagong variable ng klase.
Hakbang 5
Kung kailangan mong tawagan ang isang katangian na may protektadong katayuan sa lahat ng mga bagay ng mga klase ng bata, direktang sumangguni sa variable nito. Gayunpaman, kapag nagtatrabaho sa mga pagpapaandar ng mga banyagang klase, ang pag-access sa protektadong data ay kailangang makuha sa paraang inilarawan sa itaas.
Hakbang 6
Upang tumawag sa isang katangian nang hindi lumilikha ng isang bagay, ideklara ang variable nito sa klase bilang static gamit ang sumusunod na konstruksyon: static int atr1. Sa kasong ito, maaari mong hilahin ang katangian saanman sa program code sa pamamagitan ng pagtukoy sa entry: CMyClass:: attr1.