Դասերի օբյեկտների և այլ ատյանների հետ աշխատելիս ատրիբուտներ մուտք գործելը ծրագրավորողի սովորական գործողություններից մեկն է: Առարկաներում պահվող որոշակի տվյալների հասանելիություն ձեռք բերելը կարող է դժվար լինել ՝ հաշվի առնելով դրանց համար օգտագործվող անվտանգության մեթոդները: Այսպիսով, մասնավոր և պաշտպանված ճշգրտիչների կողմից փակված ատրիբուտները դասի օրինակից կարող են դուրս բերվել միայն նույն կամ երեխայի (պաշտպանված) դասի օբյեկտին պատկանող մեթոդով:
Հրահանգներ
Քայլ 1
Ստեղծեք օբյեկտ կամ ցուցիչ այն դասի օրինակին, որի հատկանիշը ձեզ հարկավոր է ձեր ծրագրում: Նման գործողության համար ստանդարտ կառուցվածքը CMyClass myObj1 է: Երբեմն, օբյեկտ նախնականացնելու համար, դուք պետք է որոշակի պարամետրեր փոխանցեք դասի կոնստրուկտորին: Այս դեպքում օբյեկտի ստեղծման գրառումը կարող է նման լինել. CMyClass myObj1 (param1, param2, param3), որտեղ CMyClass դասի անունն է, myObj1 ստեղծվող օբյեկտի անունն է, և կառուցապատողի կողմից պահանջվող բոլոր պարամետրերը նշված են փակագծերում: Դասի ցուցիչի ցուցիչը ստեղծվում է հետևյալ կերպ. CMyClass * pObj1 = նոր CMyClass (param1, param2, param3):
Քայլ 2
Հատկանիշ կոչելու ամենապարզ ձևը դրան անմիջապես ծրագրի ցանկացած կետում վկայակոչելն է: Այնուամենայնիվ, դա հնարավոր է միայն հանրային փոփոխիչով դասարանում նկարագրված բաց տվյալների համար: Օբյեկտի միջոցով ուղղակի մուտքն ունի այսպիսի տեսք. MyObj1.attr1, որտեղ attr1- ը այս դասի ատրիբուտ է: Interուցանիշի համար զանգը կլինի. PObj1–> attr1:
Քայլ 3
Եթե հատկանիշը, որին դուք պետք է վկայակոչեք, ունի թաքնված կարգավիճակ և նկարագրվում է մասնավոր փոփոխիչով դասարանում, ապա դրան մուտք գործելը հնարավոր է միայն նույն դասին պատկանող մեթոդից: Դասի մեթոդը կամ գործառույթը պետք է ունենա հանրային կարգավիճակ հանրային: Դասին ավելացրեք նոր մեթոդ, որտեղ գրեք պահանջվող հատկանիշի մշակումը: Այս դեպքում պարամետրերը կարող են փոխանցվել գործառույթին ՝ կախված այն բանի արժեքից, որը կատարվում է որոշակի գործողություններով: Գործառույթն ինքնին կարող է նաև վերադարձնել տվյալներ, ինչպիսիք են հատկանիշի պարունակությունը: C ++ ծրագրի ծածկագիրը, որն իրականացնում է երկու գործառույթներն էլ մասնավոր ատրիբուտի հետ աշխատելու համար. CMyClass class {protection: int attr1; // հանրային հատկանիշ ՝ անվավեր funcA1 (int param) {attr1 = param; } int funcA2 () {վերադարձ Attr1; }};
Քայլ 4
Այսպիսով, attr1 մասնավոր ատրիբուտը ձեր համար անհրաժեշտ արժեքի սահմանելու համար զանգահարեք նույն դասի մեթոդ ՝ օգտագործելով նախկինում ստեղծված օբյեկտը ՝ myObj1.funcA1 (10) - նմանատիպ անուղղակի գործողությամբ, 10 արժեքը տեղադրվում է attr1 հատկանիշում: Դասի ցուցիչի ցուցիչի հետ աշխատելիս նմանատիպ գործողությունը նման կլինի հետևյալի ՝ рObj1–> funcA (10): Մասնավոր ատրիբուտը attr1 որոնելու և դրանում պահված արժեքը պարզելու համար զանգահարեք դասի մեկ այլ մեթոդ ՝ int Res = myObj1.funcA2 (): Այս դեպքում Res ամբողջական փոփոխականին կտրվի թաքնված դասի փոփոխականի արժեքը:
Քայլ 5
Եթե Ձեզ անհրաժեշտ է զանգահարել պաշտպանված կարգավիճակով հատկանիշ մանկական դասի բոլոր օբյեկտներում, ապա ուղղակիորեն դիմեք դրա փոփոխականին: Այնուամենայնիվ, օտարերկրյա դասերի գործառույթներում աշխատելիս պաշտպանված տվյալների հասանելիությունը պետք է ձեռք բերվի վերը նկարագրված եղանակով:
Քայլ 6
Առանց օբյեկտ ստեղծելու հատկանիշ զանգահարելու համար դասում հայտարարեք դրա փոփոխականը որպես ստատիկ ՝ օգտագործելով հետևյալ կառուցվածքը. Static int attr1: Այս դեպքում կարող եք հատկանիշը դուրս հանել ծրագրի կոդի ցանկացած մասում ՝ նշելով գրառումը ՝ CMyClass:: attr1: