Sobes.tech
Junior

რა იცით კონსტანტული და კონსტანტული არა მეთოდების შესახებ?

sobes.tech AI

პასუხი AI-სგან

Կոնստանտային մեթոդներ (const methods) C++-ում դասի մեթոդներ են, որոնք հայտարարում են const բանալի բառով՝ պարամետրերի ցանկից հետո:

class MyClass {
public:
    void nonConstMethod();         // Անկոնստանտային մեթոդ
    void constMethod() const;      // Կոնստանտային մեթոդ
};

const բանալի բառը պարամետրերի ցանկից հետո երաշխավորում է, որ մեթոդը չի փոխի օբյեկտի վիճակը, որի վրա այն կանչվում է: Դա նշանակում է, որ կոնստանտային մեթոդի ներսում՝

  • Չի կարելի փոխել օբյեկտի ոչ ստատիկ տվյալ անդամները:
  • Միայն մյուս կոնստանտային մեթոդները կարող են կանչվել:

Կոնստանտային մեթոդների նպատակները:

  1. Անվտանգություն: Ապահովում է պատահական փոփոխություններից պաշտպանություն:
  2. Կիրառություն կոնստանտային օբյեկտների հետ: Կոնստանտային օբյեկտները (որոնք հայտարարում են const) կարող են կանչել միայն կոնստանտային մեթոդներ:
  3. Ավելորդության կարգավորում: Մեթոդները կարող են լինել բեռնում ըստ կոնստանտության: Դա թույլ է տալիս ունենալ երկու մեթոդ՝ նույն անունով և սիգնատուրայով, բայց մեկը կլինի կոնստանտային, մյուսը՝ ոչ:
class MyClass {
    int value;
public:
    int getValue() const { // Կոնստանտային տարբերակ
        return value;
    }
    int getValue() {       // Անկոնստանտային տարբերակ
        return value++;    // Փոփոխության հնարավորություն
    }
};

void test(const MyClass& objConst, MyClass& objNonConst) {
    objConst.getValue();    // Կոչվում է կոնստանտային տարբերակը
    objNonConst.getValue(); // Կոչվում է ոչ կոնստանտային տարբերակը
}

Անկոնստանտային մեթոդներ:

Սրանք սովորական դասի մեթոդներ են, որոնք կարող են փոխել օբյեկտի վիճակը: Դրանք հայտարարում են առանց const բանալի բառի՝ պարամետրերի ցանկից հետո:

Կիրառություն:

Օբյեկտի տեսակ Մեթոդի կանչում Որ մեթոդը կկանչվի Բացատրություն
const T obj.method() Միայն կոնստանտային Չի կարելի փոխել կոնստանտային օբյեկտի վիճակը
T obj.method() Նոնկոնստանտային (եթե կա) Նոնկոնստանտային մեթոդները կարող են փոխել վիճակը
T obj.method() const Կոնստանտային (եթե կա) Եթե երկու տարբերակներն էլ կան և կանչվում են ոչ կոնստանտային օբյեկտից, նախապատվությունը տալիս է ոչ կոնստանտայինին: Բայց կարելի է հստակ կանչել կոնստանտային տարբերակը, եթե անհրաժեշտ է:

Կոնստանտության օգտագործումը լավ պրակտիկա է, քանի որ այն բարձրացնում է կարդալու և անվտանգության մակարդակը, ինչպես նաև թույլ է տալիս կոմպիլյատորին կատարել լրացուցիչ օպտիմիզացիաներ: