Sobes.tech
Junior

Дар бораи усулҳои доимии C/C++ гап зан.

sobes.tech AI

Ҷавоб аз AI

Равонумии мустақим як усули синфи аст, ки бо калиди калидии const пас аз рӯйхати параметрҳо эълон карда мешавад. Он кафолат медиҳад, ки усул ҳолати объекти синф (this) тағир намедиҳад.

Хусусиятҳои асосӣ ва истифода:

  • Гарантии беэътиборӣ: Дар дохили усули мустақим, наметавон мустақим ё ғайримустақим аъзои маълумоти ғайри статикро тағир дод.
  • Занг барои объектҳои мустақим: Усулҳои мустақим метавонанд ҳам барои объектҳои мустақим ва ҳам барои ғайри мустақим даъват шаванд. Усулҳои ғайри мустақим танҳо барои объектҳои ғайри мустақим даъват карда мешаванд.
  • Борбардорӣ: Усул метавонад мувофиқи мустақимӣ борбардорӣ шавад. Ин имкон медиҳад, ки ду усул бо як имзо (ном ва параметрҳо) дошта бошанд, аммо яке мустақим ва дигар не.
  • Барнома: Онҳо барои усулҳои дастрасӣ (геттерҳо) истифода мешаванд, ки танҳо арзиши аъзои маълумотро бармегардонанд, бе тағир додани объект, инчунин дар функсияҳое, ки истинодҳо ё ишораҳои мустақим ба объектҳоро қабул мекунанд.

Масалан:

class MyClass {
public:
    int getValue() const { // Усули мустақим
        // Мумкин аст, ки member_ = 10; хонда шавад, аммо нависандагӣ накунад
        return member_;
    }

    void setValue(int val) { // Усули ғайри мустақим
        member_ = val; // Мумкин аст, ки аъзои маълумотро тағир диҳад
    }

private:
    int member_;
};

void printValue(const MyClass& obj) {
    obj.getValue(); // ОК: даъвати усули мустақим барои объекти мустақим
    // obj.setValue(20); // Хатогӣ: наметавон усули ғайри мустақимро барои объекти мустақим даъват кард
}