Sobes.tech
Junior — Middle

Дар C++ кадом намудҳои ишораҳои зеҳнӣ мавҷуданд?

sobes.tech AI

Ҷавоб аз AI

Дар C++ мавҷуданд чанд навъ асосии ишораҳои зеҳнӣ, ки кӯмак мекунанд дар идоракунии вақти зиндагии объектҳо ва пешгирии фиребҳои хотира:

  • std::unique_ptr — таъмин мекунад соҳиби ягонаи объект. Объект вақте нобуд мешавад, ки unique_ptr аз доираи амал хориҷ мешавад. Нусхабардорӣ намешавад, аммо интиқол дода мешавад.

  • std::shared_ptr — ҳисобкунии истинодҳоро амалӣ мекунад. Баъзе ишораҳо метавонанд соҳиби як объект бошанд, ки вақте охирин shared_ptr хориҷ мешавад, нобуд мешавад.

  • std::weak_ptr — ишораи заиф ба объект, ки аз ҷониби shared_ptr идора мешавад. Ба вақти зиндагии объект таъсир намерасонад, барои пешгирии ишораҳои циклӣ истифода мешавад.

Маслиҳат барои истифода:

#include <memory>
#include <iostream>

int main() {
    std::unique_ptr<int> p1 = std::make_unique<int>(42);
    // std::unique_ptr<int> p2 = p1; // Хатои нусхабардорӣ
    std::unique_ptr<int> p2 = std::move(p1); // интиқоли соҳибӣ

    std::shared_ptr<int> sp1 = std::make_shared<int>(100);
    std::shared_ptr<int> sp2 = sp1; // афзоиши ҳисобкунии истинодҳо

    std::weak_ptr<int> wp = sp1; // афзоиш намедиҳад

    std::cout << *sp2 << std::endl; // 100
}