{"id":99572,"date":"2025-03-01T08:24:46","date_gmt":"2025-03-01T04:54:46","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/qt-viii-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%ad%d8%a7%d9%81%d8%b8%d9%87-%d9%87%d9%88%d8%b4%d9%85%d9%86%d8%af\/"},"modified":"2025-03-01T08:24:46","modified_gmt":"2025-03-01T04:54:46","slug":"qt-viii-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%ad%d8%a7%d9%81%d8%b8%d9%87-%d9%87%d9%88%d8%b4%d9%85%d9%86%d8%af","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/qt-viii-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%ad%d8%a7%d9%81%d8%b8%d9%87-%d9%87%d9%88%d8%b4%d9%85%d9%86%d8%af\/","title":{"rendered":"[Qt] viii \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0627\u0641\u0638\u0647 \u0647\u0648\u0634\u0645\u0646\u062f"},"content":{"rendered":"<div data-article-id=\"2300885\" id=\"article-body\">\n<blockquote>\n<p>&#8220;<em>\u0646\u0634\u0627\u0646\u06af\u0631\u0647\u0627 \u0645\u0648\u062c\u0648\u062f\u0627\u062a \u0633\u0627\u062f\u0647 \u0647\u0633\u062a\u0646\u062f. \u0622\u0646\u0647\u0627 \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u0627\u0646\u0646\u062f \u06cc\u0648\u0646 \u0647\u0627 \u0628\u0648\u062f\u0646\u062f: \u0627\u06af\u0631 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u062c\u0627\u06cc\u06cc \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f \u060c \u0622\u0646\u0647\u0627 \u062f\u0631 \u062c\u0627\u06cc\u06cc \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f \u060c \u0648 \u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u0627\u0633\u062a.<\/em><\/p>\n<p>\u0645\u0646<\/p>\n<\/blockquote>\n<p>\u0645\u0646 \u0641\u06a9\u0631 \u0645\u06cc \u06a9\u0646\u0645 \u0627\u06af\u0631 \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f \u0646\u0627\u0627\u0645\u06cc\u062f \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9nuxdutwxha89wagxrgk.png\" alt=\"SIGSEGV\" loading=\"lazy\" width=\"643\" height=\"162\" title=\"\"><\/p>\n<p>\u0627\u06cc\u0646 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0646\u062a\u06cc\u062c\u0647 \u0646\u0648\u0639\u06cc \u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u0646\u0637\u0642 \u0627\u062c\u0631\u0627 \u0639\u062c\u06cc\u0628 \u0628\u0627\u0634\u062f. \u0646\u0642\u0644 \u0642\u0648\u0644 <em>\u0634\u0631\u0648\u0639 C ++ 23<\/em> \u062a\u0648\u0633\u0637 \u0622\u0642\u0627\u06cc Ivor Horton \u0648 \u0622\u0642\u0627\u06cc Peter Van Weert \u062f\u0631 APPRASS \u2122 Publishers Werbatim (\u0633\u0644\u0628 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0642\u0627\u0646\u0648\u0646\u06cc: <strong>\u0646\u0647<\/strong> \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062a\u062c\u0627\u0631\u06cc! \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0627\u0647\u062f\u0627\u0641 \u0622\u0645\u0648\u0632\u0634\u06cc \u0648 \u0622\u0645\u0648\u0632\u0634\u06cc) \u060c<\/p>\n<blockquote>\n<p><strong>\u0646\u0634\u0627\u0646\u06af\u0631 \u0622\u0648\u06cc\u0632\u0627\u0646<\/strong> \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0627\u0634\u0627\u0631\u0647 \u06af\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0647\u0646\u0648\u0632 \u062d\u0627\u0648\u06cc \u0622\u062f\u0631\u0633 \u062d\u0627\u0641\u0638\u0647 \u0641\u0631\u0648\u0634\u06af\u0627\u0647 \u0631\u0627\u06cc\u06af\u0627\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u062a\u0648\u0633\u0637 \u0647\u0631 \u062f\u0648 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a <code>delete<\/code> \u06cc\u0627 <code>delete[]<\/code>\u0628\u0634\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0646\u0634\u0627\u0646\u06af\u0631 \u0622\u0648\u06cc\u0632\u0627\u0646 \u060c \u0634\u0645\u0627 \u0631\u0627 \u0645\u06cc \u062e\u0648\u0627\u0646\u06cc\u062f \u0648 \u06cc\u0627 \u0627\u063a\u0644\u0628 \u0628\u062f\u062a\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u060c \u0628\u0647 \u062d\u0627\u0641\u0638\u0647 \u0627\u06cc \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0632 \u0642\u0628\u0644 \u062a\u0648\u0633\u0637 \u0633\u0627\u06cc\u0631 \u0642\u0633\u0645\u062a \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0628\u0647 \u0622\u0646 \u0627\u062e\u062a\u0635\u0627\u0635 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f \u0648 \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0627\u0646\u0648\u0627\u0639 \u0646\u062a\u0627\u06cc\u062c \u063a\u06cc\u0631\u0642\u0627\u0628\u0644 \u067e\u06cc\u0634 \u0628\u06cc\u0646\u06cc \u0648 \u063a\u06cc\u0631 \u0645\u0646\u062a\u0638\u0631\u0647 \u0628\u0627\u0634\u062f.<\/p>\n<\/blockquote>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u060c \u0645\u0646 \u0641\u0631\u0636 \u0645\u06cc \u06a9\u0646\u0645 \u06a9\u0647 \u0647\u0645\u0647 \u0634\u0645\u0627 \u0628\u0686\u0647 \u0647\u0627 \u0628\u0627 \u0646\u0634\u0627\u0646\u06af\u0631\u0647\u0627\u06cc \u0622\u0648\u06cc\u0632\u0627\u0646 \u0648 \u0646\u0634\u0627\u0646\u06af\u0631\u0647\u0627\u06cc \u062a\u0647\u06cc \u0634\u06a9\u0646\u062c\u0647 \u0634\u062f\u0647 \u0627\u06cc\u062f \u060c \u062f\u0631\u0633\u062a \u0627\u0633\u062a\u061f \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0628\u0631\u062e\u06cc \u0627\u0632 \u0631\u0627\u0647 \u062d\u0644 \u0647\u0627 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f \u060c \u0645\u0627\u0646\u0646\u062f \u0645\u0648\u0627\u0631\u062f <code><memory\/><\/code> \u0648 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>std::unique_ptr<\/code> \u0648\u062a <code>std::shared_ptr<\/code>\u060c \u0648 \u063a\u06cc\u0631\u0647 \u060c \u0627\u0645\u0627 (\u0634\u062e\u0635\u0627\u064b) \u0645\u0646 \u0648\u0627\u0642\u0639\u0627\u064b \u0637\u0631\u0627\u062d\u06cc \u0631\u0627 \u062f\u0648\u0633\u062a \u0646\u062f\u0627\u0631\u0645: \u0622\u0646\u0647\u0627 \u062f\u0631 \u062a\u0639\u0627\u0631\u06cc\u0641 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0647\u0633\u062a\u0646\u062f \u060c \u062e\u0637\u0627\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f <code>Implicit template instantiation<\/code> \u062f\u0631 \u0647\u0645\u0647 \u062c\u0627 \u0638\u0647\u0648\u0631 \u0645\u06cc \u06a9\u0646\u0645 \u060c \u0648 \u0645\u0646 \u0648\u0627\u0631\u062f \u0622\u0646 \u0646\u06cc\u0633\u062a\u0645 <em>\u0646\u0627\u0645 \u06a9\u0644\u0627\u0633<\/em> \u0628\u0627 \u0647\u0631\u06af\u0648\u0646\u0647 \u062a\u0623\u06a9\u06cc\u062f (\u0627\u06cc\u0646 \u0641\u0642\u0637 \u06cc\u06a9 \u0633\u0628\u06a9 \u0627\u0633\u062a \u061b \u0627\u0645\u0627 \u060c \u0645\u0631\u062f \u060c \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0627\u0646\u062c\u0627\u0645 \u0627\u0633\u062a <em>C ++<\/em>\u0646\u0647 <em>\u067e\u0627\u0633\u06a9\u0627\u0644<\/em>\u060c \u0628\u0647 \u0634\u0631\u0637 \u0627\u06cc\u0646\u06a9\u0647 \u062d\u062a\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0647 \u0634\u0645\u0627 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0646\u0627\u0645 \u06a9\u0644\u0627\u0633 \u0631\u0627 \u0628\u062f\u0648\u0646 \u0632\u06cc\u0631\u06a9\u0631\u0647\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f)<\/p>\n<p>\u0645\u0637\u0645\u0626\u0646\u0627\u064b \u0634\u0645\u0627 \u0631\u0627 \u0645\u0642\u0635\u0631 \u0645\u06cc \u062f\u0627\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u062f\u0627\u0634\u062a\u0646 \u0633\u0631\u06cc\u0639 \u060c \u0645\u0646 \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0635\u062f \u0648 \u0628\u06cc\u0633\u062a \u062f\u0631\u0635\u062f \u0645\u06cc \u067e\u0630\u06cc\u0631\u0645. \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0645\u0646 \u0647\u0633\u062a\u0645 \u0645\u0646 \u0631\u0627\u0636\u06cc \u0646\u06cc\u0633\u062a\u0645 \u0645\u0646 \u0628\u0627\u06cc\u062f \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0628\u0647\u062a\u0631\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0645.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062a\u0633\u0644\u0637 \u0628\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u060c \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0628\u062f\u0627\u0646\u06cc\u0645 \u06a9\u0647 \u0641\u0644\u0633\u0641\u0647 C ++ \u062f\u0631 \u0645\u0648\u0631\u062f \u062a\u062e\u0635\u06cc\u0635 \u0645\u0646\u0627\u0628\u0639 \u06cc\u0627 \u062d\u062a\u06cc \u0628\u0647\u062a\u0631 \u060c \u0646\u062d\u0648\u0647 \u06a9\u0627\u0631 \u0647\u0631 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0627\u0635\u0644\u06cc \u062f\u0631 \u0632\u06cc\u0631 \u06a9\u0627\u067e\u0648\u062a \u0686\u06cc\u0633\u062a. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u060c \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062a\u0648\u0633\u0637 \u062e\u0627\u0644\u0642 C ++ \u060c Bjarne Stroustrup \u060c C ++ \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u0634\u06cc\u0627\u0621 \u0627\u062e\u062a\u0635\u0627\u0635 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a <em>\u062f\u0631<\/em> \u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646 \u06cc\u06a9 \u0634\u06cc \u0648 \u0622\u0632\u0627\u062f \u06a9\u0631\u062f\u0646 \u0627\u0634\u06cc\u0627\u0621 <em>\u062f\u0631<\/em> \u0648\u06cc\u0631\u0627\u0646 \u06a9\u0646\u0646\u062f\u0647 \u0647\u0627\u06cc \u0686\u0646\u06cc\u0646 \u0634\u06cc. \u0627\u06cc\u0646 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 RAII \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f (\u062f\u0633\u062a\u06cc\u0627\u0628\u06cc \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 \u0627\u0648\u0644\u06cc\u0647 \u0633\u0627\u0632\u06cc \u0627\u0633\u062a). \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0647\u06cc\u0686 \u062c\u0645\u0639 \u06a9\u0646\u0646\u062f\u0647 \u0632\u0628\u0627\u0644\u0647 \u062f\u0631 C ++ \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0634\u06cc\u0627\u0621 \u0628\u0644\u0627\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0631\u0627 \u0622\u0632\u0627\u062f \u06a9\u0646\u062f \u060c \u0645\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u0627\u0646 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0628\u0631\u0631\u0633\u06cc \u062e\u0633\u062a\u0647 \u06a9\u0646\u0646\u062f\u0647 \u0646\u0634\u062a \u062d\u0627\u0641\u0638\u0647 (\u06cc\u0639\u0646\u06cc \u0628\u0647 \u0632\u0628\u0627\u0646 \u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0633\u0627\u062f\u0647 \u060c \u0647\u062f\u0631 \u0631\u0641\u062a\u0646 \u062d\u0627\u0641\u0638\u0647) \u0628\u0633\u06cc\u0627\u0631 \u0645\u0631\u0627\u0642\u0628 \u0628\u0627\u0634\u0646\u062f. \u0622\u06cc\u0627 \u0631\u0627\u0647 \u062d\u0644 \u0628\u0647\u062a\u0631\u06cc \u0648\u062c\u0648\u062f \u062e\u0648\u0627\u0647\u062f \u062f\u0627\u0634\u062a\u061f<\/p>\n<p>\u062e\u0648\u0634\u0628\u062e\u062a\u0627\u0646\u0647 \u060c Qt (\u062f\u0631 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0627\u0641\u0631\u0627\u062f \u0648 \u062f\u0631 \u0627\u06a9\u062b\u0631 \u0627\u0648\u0642\u0627\u062a) \u0641\u0642\u0637 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0632\u0646\u062f\u06af\u06cc \u0645\u0634\u062a\u0631\u06a9 \u062f\u0631 \u0622\u0646\u062c\u0627 \u0627\u06cc\u0633\u062a\u0627\u062f\u0647 \u0628\u0648\u062f. \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0645\u0647\u0645 \u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f <code>QPointer<\/code>\u0628\u0627 <code>QSharedPointer<\/code>\u0628\u0627 <code>QWeakPointer<\/code>\u060c \u0648 \u063a\u06cc\u0631\u0647 \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0627\u06a9\u0646\u0648\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0647 \u0622\u0646\u0647\u0627 \u0634\u06cc\u0631\u062c\u0647 \u0628\u0632\u0646\u06cc\u0645.<\/p>\n<blockquote>\n<p>\u0627\u06af\u0631 \u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0631\u0627 \u0627\u0632 \u0645\u0646 \u0633\u0624\u0627\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u060c \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646 \u0641\u0642\u0637 \u062f\u0631 \u0645\u0642\u0627\u0644\u0627\u062a \u06af\u0630\u0634\u062a\u0647 \u0686\u0646\u062f\u06cc\u0646 \u0628\u0627\u0631 \u0628\u0647 \u0646\u0634\u0627\u0646\u06af\u0631\u0647\u0627 \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0627\u0641\u0638\u0647 \u0686\u0627\u0631\u0686\u0648\u0628 QT \u0627\u0634\u0627\u0631\u0647 \u06a9\u0631\u062f\u0645. \u0622\u0646\u0647\u0627 \u062a\u0627 \u062d\u062f\u0648\u062f\u06cc \u0645\u0647\u0645 \u0647\u0633\u062a\u0646\u062f \u060c \u0627\u0645\u0627 \u0645\u0648\u0636\u0648\u0639\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u067e\u0648\u06cc\u0627 \u062a\u062d\u062a \u067e\u0648\u0634\u0634 \u0642\u0631\u0627\u0631 \u06af\u06cc\u0631\u0646\u062f (\u06a9\u0647 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u06a9\u0634\u0641 \u0646\u0634\u062f\u0647 \u0627\u0645\u0627 \u0630\u06a9\u0631 \u0634\u062f\u0647 \u0647\u0646\u06af\u0627\u0645 \u0645\u0639\u0631\u0641\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc \u0645\u062a\u0627-\u0627\u0648\u0628\u0627\u062a) \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0646\u06cc\u0633\u062a\u0646\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u062f\u0627\u0645\u0647 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0645\u062a\u0627 \u0627\u0648\u0628\u06a9\u062a \u060c \u0633\u0631\u0627\u0646\u062c\u0627\u0645 \u0641\u0647\u0645\u06cc\u062f\u0645 \u06a9\u0647 \u0627\u06af\u0631 \u0646\u0634\u0627\u0646\u06af\u0631\u0647\u0627\u06cc \u0647\u0648\u0634\u0645\u0646\u062f \u0631\u0627 \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631\u06cc\u062f \u0648 \u06cc\u06a9 \u062a\u0645\u0631\u06cc\u0646 \u062e\u0648\u0628 \u0631\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646\u0647\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f \u060c \u062a\u0631\u062c\u06cc\u062d \u0645\u06cc \u062f\u0647\u06cc\u062f.<\/p>\n<\/blockquote>\n<p><strong>\u0642\u06cc\u0627\u0633 \u0646\u0632\u062f\u06cc\u06a9<\/strong>: <code>std::auto_ptr<\/code><\/p>\n<p>\u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0627\u0644\u06af\u0648\u06cc \u0645\u0639\u0645\u0648\u0644\u06cc <code>QPointer<\/code> \u0645\u0633\u0626\u0648\u0644 \u0646\u0638\u0627\u0631\u062a \u0628\u0631 \u0646\u0634\u0627\u0646\u06af\u0631\u0647\u0627\u06cc <code>QObject<\/code> (\u0648 \u0645\u0634\u062a\u0642\u0627\u062a \u0622\u0646 \u060c \u0627\u0644\u0628\u062a\u0647). \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0622\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0646\u0634\u0627\u0646\u06af\u0631 \u06a9\u0627\u0645\u0644\u0627\u064b \u0645\u0639\u0645\u0648\u0644\u06cc C\/C ++ \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u067e\u0631\u0627\u062a\u0648\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>-&gt;<\/code>\u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062a\u0627 \u0646\u0634\u0627\u0646\u06af\u0631 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f <code>.<\/code> \u0627\u067e\u0631\u0627\u062a\u0648\u0631 \u0648 \u0631\u0648\u0634 \u0647\u0627\u06cc\u06cc \u0628\u0627 \u0646\u0627\u0645 \u0647\u0627\u06cc \u062e\u0648\u062f \u062a\u0648\u0636\u06cc\u062d\u06cc \u0645\u0627\u0646\u0646\u062f <code>QPointer<t>::clear<\/t><\/code>\u0628\u0627 <code>QPointer<t>::data<\/t><\/code>\u0628\u0627 <code>QPointer<t>::swap<\/t><\/code> \u0648\u062a <code>QPointer<t>::isNull<\/t><\/code>\u060c \u0648 \u063a\u06cc\u0631\u0647<\/p>\n<p>\u0645\u062e\u0635\u0648\u0635\u0627\u064b \u0631\u0648\u0634 <code>QPointer<t>::isNull<\/t><\/code> \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u0638\u0627\u0631\u062a \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f <code>QObject<\/code> \u0646\u0645\u0648\u0646\u0647 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u062a. \u062a\u062d\u062a \u0627\u06cc\u0646 \u0634\u0631\u0627\u06cc\u0637 \u060c \u0631\u0648\u0634 \u0628\u0627\u0632 \u062e\u0648\u0627\u0647\u062f \u06af\u0634\u062a <code>true<\/code>\u0628\u0634\u0631 \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u060c \u0628\u0627\u0632 \u062e\u0648\u0627\u0647\u062f \u06af\u0634\u062a <code>false<\/code> \u0648 <code>QPointer<\/code>\u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f <code>0<\/code>\u0628\u0634\u0631<\/p>\n<blockquote>\n<p>\u062c\u0627\u062f\u0648 \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc \u0627\u0641\u062a\u062f \u0648\u0642\u062a\u06cc <code>QPointer<\/code> \u0639\u0645\u0644\u06af\u0631\u0647\u0627 \u0631\u0627 \u0628\u0631\u0637\u0631\u0641 \u0645\u06cc \u06a9\u0646\u0646\u062f <code>*<\/code>\u0628\u0627 <code>\/<\/code>\u0628\u0627 <code>-<\/code>\u0628\u0627 <code>&gt;<\/code>\u0628\u0627 <code>!=<\/code>\u060c \u0648 \u063a\u06cc\u0631\u0647<\/p>\n<\/blockquote>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/qt-viii-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%ad%d8%a7%d9%81%d8%b8%d9%87-%d9%87%d9%88%d8%b4%d9%85%d9%86%d8%af\/#%D8%B9%D9%85%D9%84%DB%8C_%D9%88_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%D9%87%D8%A7%DB%8C\" >\u0639\u0645\u0644\u06cc \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/qt-viii-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%ad%d8%a7%d9%81%d8%b8%d9%87-%d9%87%d9%88%d8%b4%d9%85%d9%86%d8%af\/#%D8%B9%D9%85%D9%84%DB%8C_%D9%88_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%D9%87%D8%A7%DB%8C-2\" >\u0639\u0645\u0644\u06cc \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/qt-viii-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%ad%d8%a7%d9%81%d8%b8%d9%87-%d9%87%d9%88%d8%b4%d9%85%d9%86%d8%af\/#%D8%B9%D9%85%D9%84%DB%8C_%D9%88_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%D9%87%D8%A7%DB%8C-3\" >\u0639\u0645\u0644\u06cc \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/qt-viii-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%ad%d8%a7%d9%81%d8%b8%d9%87-%d9%87%d9%88%d8%b4%d9%85%d9%86%d8%af\/#%D8%B9%D9%85%D9%84%DB%8C_%D9%88_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87\" >\u0639\u0645\u0644\u06cc \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/qt-viii-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%ad%d8%a7%d9%81%d8%b8%d9%87-%d9%87%d9%88%d8%b4%d9%85%d9%86%d8%af\/#%D8%B9%D9%85%D9%84%DB%8C_%D9%88_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-2\" >\u0639\u0645\u0644\u06cc \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B9%D9%85%D9%84%DB%8C_%D9%88_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%D9%87%D8%A7%DB%8C\"><\/span>\n<p>  \u0639\u0645\u0644\u06cc \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06af\u0631 \u06cc\u06a9 \u0646\u0634\u0627\u0646\u06af\u0631 \u0627\u0628\u062a\u062f\u0627\u06cc\u06cc C ++ \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0634\u06cc\u0621 \u0627\u0632 \u0647\u0631 \u0646\u0648\u0639 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u062f \u0648 \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0646\u0634\u0627\u0646\u06af\u0631 \u062d\u0630\u0641 \u0645\u06cc \u0634\u0648\u062f (\u06a9\u0647 \u0628\u0647 \u06cc\u06a9 \u0646\u0634\u0627\u0646\u06af\u0631 \u062e\u0627\u0645 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u0634\u0648\u062f) \u060c \u0627\u06af\u0631 \u0628\u0647 \u0622\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f \u060c \u06cc\u06a9 \u062e\u0637\u0627\u06cc \u06af\u0633\u0644 \u062a\u0642\u0633\u06cc\u0645 \u0628\u0646\u062f\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u0634\u0648\u062f (\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0627\u0644\u0627 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a). \u062f\u0631 \u0639\u0648\u0636 \u060c \u0634\u0645\u0627 \u0641\u0647\u0645\u06cc\u062f\u06cc\u062f \u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0631\u0627\u062d\u062a \u062a\u0631 \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062a\u0631 \u0627\u0633\u062a <code>QPointer<\/code> \u06a9\u0644\u0627\u0633 (\u06cc\u0627 \u0633\u0627\u06cc\u0631 \u06a9\u0644\u0627\u0633\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0627\u0641\u0638\u0647 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 QT). \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u06a9\u0648\u0686\u06a9 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight cpp\"><code>    <span class=\"c1\">\/\/ ...<\/span>\n    <span class=\"n\">QPointer<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">QLabel<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">label<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">QLabel<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Testing\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"c1\">\/\/ ... (may be destructive operations to the label object)<\/span>\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">label<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">label<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">show<\/span><span class=\"p\">();<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0645\u062b\u0627\u0644 \u0628\u0627\u0644\u0627 \u060c \u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0628\u0639\u062f \u0627\u0632 \u0622\u0646 \u0633\u062a\u0627\u0631\u0647 \u0627\u0636\u0627\u0641\u0647 \u0646\u06a9\u0646\u06cc\u062f <code>QLabel<\/code> Lexeme (\u0645\u0627\u0646\u0646\u062f \u062f\u0631 <code>QPointer<qlabel\/><\/code>\u060c \u06a9\u0647 \u0627\u0634\u062a\u0628\u0627\u0647 \u0627\u0633\u062a \u0648 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f <code>QLabl**<\/code> \u06a9\u0644\u0627\u0633).<\/p>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u060c <code>label<\/code> \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0647 <code>bool<\/code>\u060c \u06a9\u0647 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0634\u0628\u06cc\u0647 \u0628\u0647 \u062a\u0639\u06cc\u06cc\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u06cc\u06a9 \u0646\u0634\u0627\u0646\u06af\u0631 C ++ \u0645\u0639\u0645\u0648\u0644\u06cc \u0648 \u0627\u0628\u062a\u062f\u0627\u06cc\u06cc \u0627\u0633\u062a \u060c \u0628\u0647 \u062c\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0648\u0631\u062f \u0633\u0627\u0628\u0642 \u0627\u0632 \u0686\u06a9\u06cc\u062f\u0647 \u0647\u0627\u06cc QT \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0627\u0632 \u0631\u0648\u0634 \u0647\u0627\u06cc \u0628\u0627\u0647\u0648\u0634 \u062a\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f (\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u060c \u06a9\u062f \u0641\u0648\u0642 \u0628\u0647 \u0622\u0646 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u0634\u0648\u062f <code>if ((!label.isNull()) &amp;&amp; (label != 0))<\/code>) \u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0645\u0648\u0631\u062f \u062f\u0648\u0645 \u0641\u0642\u0637 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0646\u0634\u0627\u0646\u06af\u0631 \u0628\u0631\u0627\u0628\u0631 \u0627\u0633\u062a <code>0x0<\/code> \u06cc\u0627 \u0646\u0647 \u060c \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631 \u0628\u0631\u0631\u0633\u06cc \u0646\u0634\u0627\u0646\u06af\u0631\u0647\u0627\u06cc \u0622\u0648\u06cc\u0632\u0627\u0646 \u0645\u0624\u062b\u0631 \u0646\u0628\u0627\u0634\u062f.<\/p>\n<p><strong>\u0642\u06cc\u0627\u0633 \u0646\u0632\u062f\u06cc\u06a9<\/strong>: <code>std::shared_ptr<\/code><\/p>\n<p>\u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u062d\u062a\u06cc \u062f\u0642\u06cc\u0642 \u062a\u0631 \u0628\u0647 \u0646\u0627\u0645 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f <code>QSharedPointer<t\/><\/code>\u0628\u0634\u0631<\/p>\n<p>\u062f\u0631 \u0635\u0648\u0631\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0631\u062c\u0639 \u062f\u0631 \u062f\u0627\u062e\u0644 \u060c \u06cc\u0639\u0646\u06cc (\u0628\u0631\u0627\u06cc \u0645\u0628\u062a\u062f\u06cc\u0627\u0646) \u0627\u06af\u0631 \u0634\u06cc\u0621 \u0645\u062a\u0639\u0644\u0642 \u0628\u0647 \u0622\u0646 \u0628\u0627\u0634\u062f <code>QSharedPointer<t\/><\/code> \u062d\u0630\u0641 \u0634\u062f \u060c \u0645\u0634\u0631\u0648\u0637 \u0628\u0631 \u0627\u06cc\u0646\u06a9\u0647 \u0647\u06cc\u0686 \u0627\u0634\u06cc\u0627\u0621 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0647 \u0622\u0646 \u0627\u0634\u0627\u0631\u0647 \u0646\u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u0646\u062f (\u06cc\u0639\u0646\u06cc \u062a\u0639\u062f\u0627\u062f \u0645\u0631\u062c\u0639 \u0622\u0646 0) \u060c \u0633\u067e\u0633 \u0686\u0646\u06cc\u0646 \u0634\u06cc (\u06a9\u0647 \u062a\u0648\u0633\u0637 \u0646\u0634\u0627\u0646\u06af\u0631 \u0627\u0634\u0627\u0631\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f) \u062d\u0630\u0641 \u0634\u062f.<\/p>\n<blockquote>\n<p><strong>\u0647\u0634\u062f\u0627\u0631:<\/strong> \u0627\u06af\u0631 \u06cc\u06a9 \u0627\u0634\u0627\u0631\u0647 \u06af\u0631 \u0628\u0647 <code>QSharedPointer<t\/><\/code>\u060c \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f <em>\u0646\u0647<\/em> \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 <code>QSharedPointer<t\/><\/code> (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u06a9\u062f <code>Obj*obj=new Obj; QSharedPointer<obj> objPtr(obj); void func(QSharedPointer<obj>&amp;)<\/obj><\/obj><\/code>\u060c \u062a\u0645\u0627\u0633 \u0628\u06af\u06cc\u0631\u06cc\u062f <code>func(objPtr)<\/code> \u0628\u0647 \u062c\u0627\u06cc <code>func(obj)<\/code>). \u0647\u0645\u0686\u0646\u06cc\u0646 \u060c \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f <em>\u0646\u0647<\/em> \u0627\u0634\u0627\u0631\u0647 \u06af\u0631 \u0631\u0627 \u062f\u0631 \u062c\u0627\u06cc \u062f\u06cc\u06af\u0631 \u062f\u0631 \u06a9\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u062e\u0648\u062f \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f. \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0646 <em>\u0646\u0647<\/em>\u0628\u0634\u0631<\/p>\n<p>\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u060c \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0642\u0628\u0644\u0627\u064b \u0641\u0647\u0645\u06cc\u062f\u06cc\u062f \u060c \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0628\u0627\u0639\u062b \u0645\u06cc \u0634\u0648\u062f \u0633\u06cc\u0633\u062a\u0645 \u0634\u0645\u0627\u0631\u0634 \u0645\u0631\u062c\u0639 \u0646\u0627\u0644\u0647 \u0634\u0648\u062f. \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0628\u062a\u062f\u0627\u06cc\u06cc \u060c \u062d\u0630\u0641 \u0646\u0634\u0627\u0646\u06af\u0631\u0647\u0627\u06cc \u0628\u062f\u0648\u06cc \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u062f <code>delete<\/code> \u0627\u067e\u0631\u0627\u062a\u0648\u0631 \u062f\u0631 \u062c\u0627\u06cc \u062f\u06cc\u06af\u0631 \u060c \u0633\u06cc\u0633\u062a\u0645 \u0634\u0645\u0627\u0631\u0634 \u0645\u0631\u062c\u0639 \u0627\u0632 \u0627\u06cc\u0646 \u0631\u0648 \u062d\u0630\u0641 \u0634\u062f\u0647 \u0627\u0633\u062a <em>\u0648\u062c\u0648\u062f<\/em> \u0627\u0632 \u0686\u0646\u06cc\u0646 \u06a9\u062f \u0633\u067e\u0633 \u060c \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0622\u0646 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0627\u0639\u062b \u0634\u0648\u062f <code>SIGSEGV<\/code> (\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0647\u0645\u0647 \u0634\u0645\u0627 &#8230; \u062e\u0648\u0628 \u060c \u0645\u0646 \u0647\u0631\u06af\u0632 \u0646\u0645\u06a9 \u0631\u0627 \u0628\u0647 \u0632\u062e\u0645 \u0646\u0645\u06cc \u0645\u0627\u0644\u0645).<\/p>\n<p>\u062f\u0631 \u0639\u0648\u0636 \u060c \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 <code>=<\/code> \u0627\u067e\u0631\u0627\u062a\u0648\u0631 \u0628\u0631\u0627\u06cc \u06a9\u067e\u06cc \u06a9\u0631\u062f\u0646 <code>QSharedPointer<t\/><\/code> \u0628\u0647 \u062f\u06cc\u06af\u0631\u06cc \u062a\u0627\u06cc\u067e \u06a9\u0646\u06cc\u062f \u060c \u0648 \u0647\u0631 \u062f\u0648 \u06cc\u06a9 \u0646\u0634\u0627\u0646\u06af\u0631 \u06cc\u06a9\u0633\u0627\u0646 \u0628\u0648\u062f\u0646\u062f. \u0627\u06cc\u0646 \u0628\u0627\u0631 \u060c \u0634\u0645\u0627\u0631\u0634 \u0645\u0631\u062c\u0639 \u062f\u0627\u062e\u0644\u06cc \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc 1 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u06cc \u06cc\u0627\u0628\u062f \u060c \u0648 QT \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062f\u0647\u062f \u06a9\u0647 \u0634\u0645\u0627 \u0627\u0632 \u0627\u0645\u0646\u06cc\u062a \u0646\u0634\u0627\u0646\u06af\u0631 \u0647\u0633\u062a\u06cc\u062f \u0648 \u0647\u0631\u06af\u0632 \u0628\u0627 \u0647\u06cc\u0686 \u06a9\u0633 \u0631\u0648\u0628\u0631\u0648 \u0646\u0645\u06cc \u0634\u0648\u06cc\u062f <code>SIGSEGV<\/code> (\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0634\u0645\u0627 &#8230; \u062e\u0648\u0628 \u060c \u062e\u0648\u0628).<\/p>\n<\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B9%D9%85%D9%84%DB%8C_%D9%88_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%D9%87%D8%A7%DB%8C-2\"><\/span>\n<p>  \u0639\u0645\u0644\u06cc \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06af\u0631 \u0646\u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0647 \u0686\u0647 \u0632\u0645\u0627\u0646\u06cc \u0648 \u06a9\u062c\u0627 \u0634\u06cc\u0621 \u0634\u0645\u0627 \u062d\u0630\u0641 \u0634\u0648\u062f (\u062f\u0631 \u0636\u0645\u0646 \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u06cc\u062f \u06a9\u0647 \u062d\u0630\u0641 \u0646\u0634\u0648\u062f) \u060c <em>\u0648\u062a<\/em> \u0648\u06cc\u0698\u06af\u06cc \u062c\u0645\u0639 \u0622\u0648\u0631\u06cc \u0632\u0628\u0627\u0644\u0647 \u0647\u0627 \u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>QSharedPointer<t\/><\/code>\u0628\u0634\u0631 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u0633\u0627\u062f\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u060c \u0648 \u0645\u0646 \u0641\u0642\u0637 \u0628\u0647 <code>main.cpp<\/code> \u067e\u0631\u0648\u0646\u062f\u0647 \u0628\u0627 <code><qtcore\/><\/code> \u0641\u0642\u0637:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight cpp\"><code><span class=\"cp\">#include<\/span> <span class=\"cpf\"><qdebug\/><\/span><span class=\"cp\">\n#include<\/span> <span class=\"cpf\"><qsharedpointer\/><\/span><span class=\"cp\">\n<\/span>\n<span class=\"k\">class<\/span> <span class=\"nc\">Debugger<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"nl\">public:<\/span>\n    <span class=\"n\">Debugger<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">qDebug<\/span><span class=\"p\">()<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"s\">\"Debugger constructor called.\"<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">qDebug<\/span><span class=\"p\">()<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"s\">\"\"<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"o\">~<\/span><span class=\"n\">Debugger<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">qDebug<\/span><span class=\"p\">()<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"s\">\"Debugger destructor called.\"<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">qDebug<\/span><span class=\"p\">()<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"s\">\"\"<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n<span class=\"k\">public<\/span><span class=\"o\">:<\/span>\n    <span class=\"kt\">void<\/span> <span class=\"nf\">debug<\/span><span class=\"p\">(<\/span><span class=\"k\">const<\/span> <span class=\"n\">QString<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">message<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">qDebug<\/span><span class=\"p\">()<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"s\">\"Debugger debugged called:\"<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">qDebug<\/span><span class=\"p\">()<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"s\">\"    \"<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"n\">message<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">ImportantObject<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"nl\">public:<\/span>\n    <span class=\"n\">ImportantObject<\/span><span class=\"p\">(<\/span><span class=\"n\">QString<\/span> <span class=\"n\">name<\/span><span class=\"p\">)<\/span>\n        <span class=\"o\">:<\/span> <span class=\"n\">m_name<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{}<\/span>\n\n    <span class=\"o\">~<\/span><span class=\"n\">ImportantObject<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">m_debugger<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">debug<\/span><span class=\"p\">(<\/span><span class=\"n\">QString<\/span><span class=\"p\">(<\/span><span class=\"s\">\"%1 exit\"<\/span><span class=\"p\">).<\/span><span class=\"n\">arg<\/span><span class=\"p\">(<\/span><span class=\"n\">m_name<\/span><span class=\"p\">));<\/span>\n    <span class=\"p\">}<\/span>\n\n<span class=\"k\">public<\/span><span class=\"o\">:<\/span>\n    <span class=\"kt\">void<\/span> <span class=\"nf\">setDebugger<\/span><span class=\"p\">(<\/span><span class=\"n\">QSharedPointer<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">Debugger<\/span><span class=\"o\">&gt;<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">debugger<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">m_debugger<\/span> <span class=\"o\">=<\/span> <span class=\"n\">debugger<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n<span class=\"k\">private<\/span><span class=\"o\">:<\/span>\n    <span class=\"n\">QString<\/span> <span class=\"n\">m_name<\/span><span class=\"p\">;<\/span>\n    <span class=\"n\">QSharedPointer<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">Debugger<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">m_debugger<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"kt\">int<\/span> <span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">argc<\/span><span class=\"p\">,<\/span> <span class=\"kt\">char<\/span> <span class=\"o\">*<\/span><span class=\"n\">argv<\/span><span class=\"p\">[])<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Scopes:<\/span>\n    <span class=\"c1\">\/\/     Think like functions, where the variables are not usable outside of it<\/span>\n    <span class=\"c1\">\/\/     Sometimes called closures<\/span>\n    <span class=\"n\">ImportantObject<\/span> <span class=\"o\">*<\/span><span class=\"n\">obj1<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"n\">ImportantObject<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Important Object I\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">QSharedPointer<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">Debugger<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">debugger<\/span><span class=\"p\">(<\/span><span class=\"k\">new<\/span> <span class=\"n\">Debugger<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"n\">QSharedPointer<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">Debugger<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">copiedDebugger<\/span><span class=\"p\">(<\/span><span class=\"n\">debugger<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"n\">obj1<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">setDebugger<\/span><span class=\"p\">(<\/span><span class=\"n\">debugger<\/span><span class=\"p\">);<\/span>\n\n        <span class=\"p\">{<\/span>\n            <span class=\"n\">ImportantObject<\/span> <span class=\"n\">obj2<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Important Object II\"<\/span><span class=\"p\">);<\/span>\n            <span class=\"n\">obj2<\/span><span class=\"p\">.<\/span><span class=\"n\">setDebugger<\/span><span class=\"p\">(<\/span><span class=\"n\">debugger<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">delete<\/span> <span class=\"n\">obj1<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">return<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0646\u062a\u06cc\u062c\u0647 \u0627\u06cc\u0646\u062c\u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>Debugger constructor called.\n\nDebugger debugged called:\n     \"Important Object II exit\"\nDebugger debugged called:\n     \"Important Object I exit\"\nDebugger destructor called.\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u062f\u06cc\u0647\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062d\u0627\u0641\u0638\u0647 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p><strong>\u0642\u06cc\u0627\u0633 \u0646\u0632\u062f\u06cc\u06a9<\/strong>: <code>std::weak_ptr<\/code><\/p>\n<p>\u0647\u0645\u0647 \u0646\u0645\u06cc \u062e\u0648\u0627\u0647\u0646\u062f \u0636\u0639\u06cc\u0641 \u0628\u0627\u0634\u0646\u062f \u060c \u0628\u0647 \u062c\u0632 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0627\u0641\u0638\u0647. \u0628\u0648\u0647\u0627 <em>\u0627\u0634\u0627\u0631\u0647 \u06af\u0631 \u0636\u0639\u06cc\u0641<\/em> \u0636\u0639\u06cc\u0641 \u0627\u0633\u062a \u060c \u0632\u06cc\u0631\u0627 \u0634\u0645\u0627 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u0627\u0634\u0627\u0631\u0647 \u06af\u0631 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f (\u0641\u0642\u0637 \u0627\u0632 \u0637\u0631\u06cc\u0642 <code>QWeakPointer<t>::data<\/t><\/code>) \u061b \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0646\u0634\u0627\u0646\u06af\u0631 \u062a\u0636\u0645\u06cc\u0646 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a (\u06cc\u0639\u0646\u06cc \u0634\u0627\u0646\u0633 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0646\u0634\u0627\u0646\u06af\u0631 \u0627\u0631\u062c\u0627\u0639 \u0634\u062f\u0647 \u0642\u0628\u0644\u0627\u064b \u062d\u0630\u0641 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f).<\/p>\n<p><code>QWeakPointer<t\/><\/code>  \u062a\u0627 \u062d\u062f \u0632\u06cc\u0627\u062f\u06cc \u06cc\u06a9\u0633\u0627\u0646 \u0628\u0648\u062f <code>QPointer<t\/><\/code>\u060c \u0628\u0647 \u062c\u0632 \u0627\u06cc\u0646 \u06a9\u0647 \u0641\u0642\u0637 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f \u060c \u0648 \u0628\u0627\u06cc\u062f \u0628\u0627 \u0622\u0646 \u062c\u0641\u062a \u0634\u0648\u062f <code>QSharedPointer<t\/><\/code>\u0628\u0634\u0631 \u0647\u0645\u0686\u0646\u06cc\u0646 \u060c \u0627\u06af\u0631\u0686\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u06cc\u06a9 \u0645\u0639\u0627\u062f\u0644 \u062a\u0628\u062f\u06cc\u0644 \u0634\u0648\u062f <code>QSharedPointer<t\/><\/code> \u0627\u0632 \u0637\u0631\u06cc\u0642 <code>QWeakPointer<t>::toStrongRef<\/t><\/code>\u060c \u062e\u06cc\u0644\u06cc \u0646\u0627\u062e\u0648\u0634\u0627\u06cc\u0646\u062f \u0627\u0633\u062a \u06a9\u0647 \u0647\u0646\u0648\u0632 \u0628\u0627\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0628\u0647 \u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a <code>QSharedPointer<t\/><\/code> \u0634\u06cc\u0621 \u062a\u0647\u06cc \u0627\u0633\u062a \u06cc\u0627 \u0646\u0647.<\/p>\n<p>\u0627\u06af\u0631 \u0628\u0627\u0634\u062f <em>\u0627\u06cc\u0646 \u06a9\u0647<\/em> \u0645\u0634\u06a9\u0644 \u0633\u0627\u0632 \u060c \u0686\u0631\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u0627 \u0647\u0646\u0648\u0632 \u062a\u0635\u0645\u06cc\u0645 \u0628\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u062f\u0627\u0631\u06cc\u0645\u061f<\/p>\n<p>\u0627\u06cc\u0646 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0628\u0631\u0627\u0628\u0631 \u0628\u0627 \u0631\u0627\u0628\u0637\u0647 \u0627\u0633\u062a <code>std::string_view<\/code> \u0648\u062a <code>std::string<\/code>\u0628\u0634\u0631 \u062f\u0631 \u0645\u0648\u0631\u062f \u0642\u0628\u0644\u06cc \u060c \u0634\u0645\u0627 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0631\u0634\u062a\u0647 \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u060c \u0627\u0635\u0644\u0627\u062d \u06a9\u0646\u06cc\u062f \u060c \u067e\u06cc\u0686 \u0648 \u062a\u0627\u0628 \u06a9\u0646\u06cc\u062f. \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f <em>\u062a\u0646\u0647\u0627<\/em> \u0645\u0634\u0627\u0647\u062f\u0647 \u0622\u0646 \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u060c \u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u0627 \u0647\u0646\u0648\u0632 \u062a\u0635\u0645\u06cc\u0645 \u0628\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u062f\u0627\u0631\u06cc\u0645 \u0632\u06cc\u0631\u0627 \u0627\u06cc\u0646 \u0627\u0633\u062a <em>\u0633\u0631\u06cc\u0639\u062a\u0631<\/em>\u060c \u0632\u06cc\u0631\u0627 \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc \u0641\u0647\u0631\u0633\u062a \u0628\u0646\u062f\u06cc \u0648 \u0627\u0635\u0644\u0627\u062d \u062a\u0627 \u062d\u062f \u0632\u06cc\u0627\u062f\u06cc \u062d\u0630\u0641 \u0645\u06cc \u0634\u0648\u0646\u062f. \u06cc\u06a9 \u0642\u06cc\u0627\u0633 \u0645\u0634\u0627\u0628\u0647 \u0628\u06cc\u0646 a \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f <code>tuple<\/code> \u0648 \u0627\u0644\u0641 <code>list<\/code> \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B9%D9%85%D9%84%DB%8C_%D9%88_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%D9%87%D8%A7%DB%8C-3\"><\/span>\n<p>  \u0639\u0645\u0644\u06cc \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06af\u0631 \u0641\u0642\u0637 \u0628\u0647 \u06cc\u06a9 <em>\u0646\u0627\u0638\u0631<\/em> \u0628\u0631\u0627\u06cc \u062f\u06cc\u062f\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u0634\u06cc\u0621 \u062a\u0647\u06cc \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631 \u060c \u0628\u0647 \u062c\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u06a9\u0627\u0631\u06cc \u0628\u0647 \u0622\u0646.<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u060c \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u0627\u0635\u0644\u0627\u062d \u0634\u062f\u0647 \u0627\u0632 \u0645\u062b\u0627\u0644 \u0628\u0627\u0644\u0627 \u060c \u06af\u0646\u062c\u0627\u0646\u06cc\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a <code>QSharedPointer<t\/><\/code> \u0648\u062a <code>QWeakPointer<t\/><\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight cpp\"><code><span class=\"cp\">#include<\/span> <span class=\"cpf\"><qdebug\/><\/span><span class=\"cp\">\n#include<\/span> <span class=\"cpf\"><qsharedpointer\/><\/span><span class=\"cp\">\n<\/span>\n<span class=\"k\">class<\/span> <span class=\"nc\">Debugger<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"nl\">public:<\/span>\n    <span class=\"n\">Debugger<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">qDebug<\/span><span class=\"p\">()<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"s\">\"Debugger constructor called.\"<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">qDebug<\/span><span class=\"p\">()<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"s\">\"\"<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"o\">~<\/span><span class=\"n\">Debugger<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">qDebug<\/span><span class=\"p\">()<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"s\">\"Debugger destructor called.\"<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">qDebug<\/span><span class=\"p\">()<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"s\">\"\"<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n<span class=\"k\">public<\/span><span class=\"o\">:<\/span>\n    <span class=\"kt\">void<\/span> <span class=\"nf\">debug<\/span><span class=\"p\">(<\/span><span class=\"k\">const<\/span> <span class=\"n\">QString<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">message<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">qDebug<\/span><span class=\"p\">()<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"s\">\"Debugger debugged called:\"<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">qDebug<\/span><span class=\"p\">()<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"s\">\"    \"<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"n\">message<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">qDebug<\/span><span class=\"p\">()<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"s\">\"\"<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">ImportantObject<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"nl\">public:<\/span>\n    <span class=\"n\">ImportantObject<\/span><span class=\"p\">(<\/span><span class=\"n\">QString<\/span> <span class=\"n\">name<\/span><span class=\"p\">)<\/span>\n        <span class=\"o\">:<\/span> <span class=\"n\">m_name<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{}<\/span>\n\n    <span class=\"o\">~<\/span><span class=\"n\">ImportantObject<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">m_debugger<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">debug<\/span><span class=\"p\">(<\/span><span class=\"n\">QString<\/span><span class=\"p\">(<\/span><span class=\"s\">\"%1 exit\"<\/span><span class=\"p\">).<\/span><span class=\"n\">arg<\/span><span class=\"p\">(<\/span><span class=\"n\">m_name<\/span><span class=\"p\">));<\/span>\n    <span class=\"p\">}<\/span>\n\n<span class=\"k\">public<\/span><span class=\"o\">:<\/span>\n    <span class=\"kt\">void<\/span> <span class=\"nf\">setDebugger<\/span><span class=\"p\">(<\/span><span class=\"n\">QSharedPointer<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">Debugger<\/span><span class=\"o\">&gt;<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">debugger<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">m_debugger<\/span> <span class=\"o\">=<\/span> <span class=\"n\">debugger<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n<span class=\"k\">private<\/span><span class=\"o\">:<\/span>\n    <span class=\"n\">QString<\/span> <span class=\"n\">m_name<\/span><span class=\"p\">;<\/span>\n    <span class=\"n\">QSharedPointer<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">Debugger<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">m_debugger<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"kt\">int<\/span> <span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">argc<\/span><span class=\"p\">,<\/span> <span class=\"kt\">char<\/span> <span class=\"o\">*<\/span><span class=\"n\">argv<\/span><span class=\"p\">[])<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Scopes:<\/span>\n    <span class=\"c1\">\/\/     Think like functions, where the variables are not usable outside of it<\/span>\n    <span class=\"c1\">\/\/     Sometimes called closures<\/span>\n    <span class=\"n\">ImportantObject<\/span> <span class=\"o\">*<\/span><span class=\"n\">obj1<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"n\">ImportantObject<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Important Object I\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">QSharedPointer<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">Debugger<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">debugger<\/span><span class=\"p\">(<\/span><span class=\"k\">new<\/span> <span class=\"n\">Debugger<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">QWeakPointer<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">Debugger<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">weakReference<\/span><span class=\"p\">(<\/span><span class=\"n\">debugger<\/span><span class=\"p\">);<\/span>\n\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"n\">weakReference<\/span><span class=\"p\">.<\/span><span class=\"n\">isNull<\/span><span class=\"p\">())<\/span>\n            <span class=\"n\">qDebug<\/span><span class=\"p\">()<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"s\">\"At I: Weak reference is not null<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">;<\/span>\n\n        <span class=\"p\">{<\/span>\n            <span class=\"n\">QSharedPointer<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">Debugger<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">copiedDebugger<\/span><span class=\"p\">(<\/span><span class=\"n\">debugger<\/span><span class=\"p\">);<\/span>\n            <span class=\"n\">weakReference<\/span> <span class=\"o\">=<\/span> <span class=\"n\">copiedDebugger<\/span><span class=\"p\">;<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"n\">obj1<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">setDebugger<\/span><span class=\"p\">(<\/span><span class=\"n\">debugger<\/span><span class=\"p\">);<\/span>\n\n        <span class=\"p\">{<\/span>\n            <span class=\"n\">ImportantObject<\/span> <span class=\"n\">obj2<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Important Object II\"<\/span><span class=\"p\">);<\/span>\n            <span class=\"n\">obj2<\/span><span class=\"p\">.<\/span><span class=\"n\">setDebugger<\/span><span class=\"p\">(<\/span><span class=\"n\">debugger<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"n\">weakReference<\/span><span class=\"p\">.<\/span><span class=\"n\">isNull<\/span><span class=\"p\">())<\/span>\n            <span class=\"n\">qDebug<\/span><span class=\"p\">()<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"s\">\"At II: Weak reference is not null<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">delete<\/span> <span class=\"n\">obj1<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">return<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0646\u062a\u06cc\u062c\u0647 \u0627\u06cc\u0646\u062c\u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>Debugger constructor called.\n\nAt I: Weak reference is not null\n\nDebugger debugged called:\n     \"Important Object II exit\"\n\nAt II: Weak reference is not null\n\nDebugger debugged called:\n     \"Important Object I exit\"\n\nDebugger destructor called.\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u0642\u06cc\u0627\u0633 \u0646\u0632\u062f\u06cc\u06a9<\/strong>: <code>std::unique_ptr<\/code><\/p>\n<p><code>QScopedPointer<t\/><\/code>  \u0627\u0632 \u0627\u067e\u0631\u0627\u062a\u0648\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f <code>new<\/code> \u0628\u0631\u0627\u06cc \u0627\u062e\u062a\u0635\u0627\u0635 \u067e\u0648\u06cc\u0627 \u0627\u0634\u06cc\u0627\u0621 \u0631\u0648\u06cc \u067e\u0634\u062a\u0647 \u060c \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u062f\u0631 \u0647\u0631 \u0632\u0645\u0627\u0646 \u0627\u0634\u06cc\u0627\u0621 \u067e\u0648\u06cc\u0627 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u062d\u0630\u0641 \u0634\u0648\u0646\u062f.<\/p>\n<p>\u0627\u06af\u0631 \u0645\u0627\u0644\u06a9\u06cc\u062a \u06cc\u06a9 \u0634\u06cc\u0621 \u062e\u0627\u0635 \u0631\u0627 \u0628\u0647 \u0622\u0646 \u0628\u062f\u0647\u06cc\u062f <code>QScopedPointer<t\/><\/code>\u060c \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0622\u0646 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u0646\u06cc\u0633\u062a. \u0647\u0645\u0686\u0646\u06cc\u0646 \u060c \u0647\u0631\u06af\u0632 \u0645\u0627\u0644\u06a9\u06cc\u062a \u0631\u0627 \u0628\u0647 \u0647\u06cc\u0686 \u0634\u06cc\u0621 \u062f\u06cc\u06af\u0631 \u06cc\u0627 \u0646\u0634\u0627\u0646\u06af\u0631 \u0647\u0648\u0634\u0645\u0646\u062f \u0645\u0646\u062a\u0642\u0644 \u0646\u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u062d\u062a\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0631\u0648\u0634 \u062d\u0630\u0641 \u0631\u0627 \u062f\u0631 \u0637\u0648\u0644 \u0633\u0627\u062e\u062a \u0648 \u0633\u0627\u0632 \u0627\u062e\u062a\u0635\u0627\u0635 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u0686\u0647\u0627\u0631 \u06cc\u0627\u0631\u06cc \u062a\u062e\u0635\u06cc\u0635 \u062f\u0627\u062e\u0644\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 <code>QScopedPointer<\/code>\u060c \u06cc\u0639\u0646\u06cc:<\/p>\n<ol>\n<li>\n<code>QScopedPointerDeleter<\/code>  \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u06cc <code>delete<\/code> \u0648\u062a <code>new<\/code> \u0628\u0631\u0627\u06cc \u062a\u062e\u0635\u06cc\u0635 \u0627\u0634\u06cc\u0627\u0621 \u061b<\/li>\n<li>\n<code>QScopedPointerArrayDeleter<\/code>  \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u06cc <code>delete[]<\/code> \u0648\u062a <code>new[]<\/code> \u0628\u0631\u0627\u06cc \u062a\u062e\u0635\u06cc\u0635 \u0627\u0634\u06cc\u0627\u0621 \u061b<\/li>\n<li>\n<code>QScopedPointerPodDeleter<\/code>  (\u06a9\u062c\u0627 <code>Pod<\/code> \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc &#8220;\u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc \u0633\u0627\u062f\u0647&#8221;) \u0627\u0632 C \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f (\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a <em>\u0633\u0627\u062f\u0647<\/em> \u0648\u062a <em>\u0642\u062f\u06cc\u0645\u06cc<\/em>) <code>free<\/code> \u0648\u062a <code>malloc<\/code> \u0628\u0631\u0627\u06cc \u062a\u062e\u0635\u06cc\u0635 \u0627\u0634\u06cc\u0627\u0621 \u061b \u0648\u062a<\/li>\n<li>\n<code>QScopedPointerDeleteLater<\/code>  \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u06cc <code>QObject::deleteLater<\/code> \u0628\u0631\u0627\u06cc \u062d\u0630\u0641 \u0639\u0627\u0642\u0644\u0627\u0646\u0647 \u0627\u0634\u06cc\u0627\u0621. \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 (\u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b) \u0627\u06cc\u0646 \u062e\u0637\u0627\u06cc \u0631\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u0634\u0627\u0646\u06af\u0631\u0647\u0627\u06cc scoped \u063a\u06cc\u0631<code>QObject<\/code>-\u062f\u06cc\u0646.<\/li>\n<\/ol>\n<p>\u0622\u0646\u0647\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0645\u0627\u0646\u0646\u062f (\u0627\u0632 \u06a9\u062a\u0627\u0628\u0686\u0647 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0631\u0633\u0645\u06cc QT) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight cpp\"><code><span class=\"n\">QScopedPointer<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"p\">,<\/span> <span class=\"n\">QScopedPointerArrayDeleter<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"o\">&gt;<\/span> <span class=\"o\">&gt;<\/span> <span class=\"n\">arrayPointer<\/span><span class=\"p\">(<\/span><span class=\"k\">new<\/span> <span class=\"kt\">int<\/span><span class=\"p\">[<\/span><span class=\"mi\">42<\/span><span class=\"p\">]);<\/span>\n\n<span class=\"n\">QScopedPointer<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"p\">,<\/span> <span class=\"n\">QScopedPointerPodDeleter<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">podPointer<\/span><span class=\"p\">(<\/span><span class=\"k\">reinterpret_cast<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span> <span class=\"o\">*&gt;<\/span><span class=\"p\">(<\/span><span class=\"n\">malloc<\/span><span class=\"p\">(<\/span><span class=\"mi\">42<\/span><span class=\"p\">)));<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0646 \u06af\u0641\u062a\u0645 <em>\u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647<\/em>\u060c \u0632\u06cc\u0631\u0627 \u0686\u0627\u0631\u0686\u0648\u0628 QT \u062a\u0648\u0627\u0646\u0627 \u062d\u062a\u06cc \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06cc\u0627\u0631\u0627\u0646 \u062a\u062e\u0635\u06cc\u0635 \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight cpp\"><code><span class=\"k\">struct<\/span> <span class=\"nc\">ScopedPointerCustomDeleter<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">static<\/span> <span class=\"kr\">inline<\/span> <span class=\"kt\">void<\/span> <span class=\"n\">cleanup<\/span><span class=\"p\">(<\/span><span class=\"n\">MyCustomClass<\/span> <span class=\"o\">*<\/span><span class=\"n\">pointer<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">myCustomDeallocator<\/span><span class=\"p\">(<\/span><span class=\"n\">pointer<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"n\">QScopedPointer<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">MyCustomClass<\/span><span class=\"p\">,<\/span> <span class=\"n\">ScopedPointerCustomDeleter<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">customPointer<\/span><span class=\"p\">(<\/span><span class=\"k\">new<\/span> <span class=\"n\">MyCustomClass<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>&#8230; \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f <em>\u0628\u0627\u06cc\u062f<\/em> \u06cc\u06a9 \u0631\u0648\u0634 \u0628\u0627\u0634\u062f <code>static public inline void cleanup(TargetClass *pointer)<\/code> <del>(\u0647\u0631 \u0686\u0646\u062f \u062c\u0627\u0648\u0627 \u0646\u06cc\u0633\u062a!)<\/del><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B9%D9%85%D9%84%DB%8C_%D9%88_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87\"><\/span>\n<p>  \u0639\u0645\u0644\u06cc \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06af\u0631 \u0627\u0638\u0647\u0627\u0631\u0627\u062a \u06a9\u0646\u062a\u0631\u0644 \u0632\u06cc\u0627\u062f\u06cc \u062f\u0627\u0634\u062a\u06cc\u062f \u06a9\u0647 \u0628\u0633\u06cc\u0627\u0631 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0628\u0648\u062f\u0646\u062f \u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>QScopedPointer<t\/><\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight cpp\"><code><span class=\"kt\">int<\/span> <span class=\"nf\">function<\/span><span class=\"p\">(<\/span><span class=\"n\">Enum<\/span> <span class=\"k\">enum<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"n\">QScopedPointer<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">Class<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">myClass<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"n\">Class<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">switch<\/span> <span class=\"p\">(<\/span><span class=\"k\">enum<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n    <span class=\"k\">case<\/span> <span class=\"mi\">1<\/span><span class=\"p\">:<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">function1<\/span><span class=\"p\">(<\/span><span class=\"n\">myClass<\/span><span class=\"p\">))<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">externalProcess<\/span><span class=\"p\">(<\/span><span class=\"n\">myClass<\/span><span class=\"p\">))<\/span>\n                <span class=\"k\">return<\/span> <span class=\"n\">finalProcess<\/span><span class=\"p\">(<\/span><span class=\"n\">myClass<\/span><span class=\"p\">);<\/span>\n            <span class=\"k\">else<\/span> <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">anotherProcess<\/span><span class=\"p\">(<\/span><span class=\"n\">myClass<\/span><span class=\"p\">))<\/span>\n                <span class=\"k\">return<\/span> <span class=\"mi\">42<\/span><span class=\"p\">;<\/span>\n            <span class=\"k\">else<\/span> <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">someFunction<\/span><span class=\"p\">(<\/span><span class=\"n\">myClass<\/span><span class=\"p\">))<\/span>\n                <span class=\"k\">return<\/span> <span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n            <span class=\"n\">errorProcess<\/span><span class=\"p\">(<\/span><span class=\"n\">myClass<\/span><span class=\"p\">);<\/span>\n            <span class=\"k\">return<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"k\">else<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">return<\/span> <span class=\"p\">(<\/span><span class=\"n\">yetAnother<\/span><span class=\"p\">(<\/span><span class=\"n\">myClass<\/span><span class=\"p\">)<\/span> <span class=\"o\">?<\/span> <span class=\"mi\">1<\/span> <span class=\"o\">:<\/span> <span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n        <span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">case<\/span> <span class=\"mi\">2<\/span><span class=\"p\">:<\/span>\n        <span class=\"n\">externalProcess<\/span><span class=\"p\">(<\/span><span class=\"n\">myClass<\/span><span class=\"p\">);<\/span> <span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">default<\/span><span class=\"o\">:<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nf\">yetAnotherProcessOtherThanThose<\/span><span class=\"p\">(<\/span><span class=\"n\">myClass<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"n\">errorProcess<\/span><span class=\"p\">(<\/span><span class=\"n\">myClass<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">return<\/span> <span class=\"o\">-<\/span><span class=\"mi\">42<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06af\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u06cc \u06a9\u0646\u06cc\u062f <code>QScopedPointer<t\/><\/code>\u060c \u0627\u06cc\u0646 \u06cc\u06a9 \u0622\u0634\u0641\u062a\u06af\u06cc \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<p><code>QObject<\/code>  \u06af\u0627\u0647\u06cc \u0627\u0648\u0642\u0627\u062a \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0646\u0634\u0627\u0646\u06af\u0631 \u0646\u06cc\u0645\u0647 \u0647\u0648\u0634\u0645\u0646\u062f \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a \u06a9\u0647 <code>QObject<\/code> \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0632\u0626\u06cc \u062d\u0627\u0641\u0638\u0647 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u060c \u0627\u0645\u0627 \u0628\u0647 \u0633\u062e\u062a\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0631\u0648\u0634\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0627\u0632 \u0622\u0646 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a <code>QScopedPointer<t\/><\/code> \u06cc\u0627 <code>QSharedPointer<t\/><\/code>\u060c \u0648 \u063a\u06cc\u0631\u0647<\/p>\n<p>\u0634\u0645\u0627 \u0642\u0628\u0644\u0627\u064b \u0628\u0633\u06cc\u0627\u0631\u06cc \u0631\u0627 \u062f\u06cc\u062f\u0647 \u0627\u06cc\u062f <code>QObject<\/code> \u0641\u0631\u0632\u0646\u062f\u0627\u0646 \u062f\u0627\u0631\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0632\u06cc\u0631 \u062f\u0631 \u0633\u0627\u0632\u0646\u062f\u06af\u0627\u0646 \u062e\u0648\u062f \u0647\u0633\u062a\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight cpp\"><code><span class=\"n\">Constructor<\/span><span class=\"p\">(<\/span><span class=\"n\">QObject<\/span> <span class=\"o\">*<\/span><span class=\"n\">parent<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">nullptr<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0636\u0645\u06cc\u0645\u0647 &#8220;\u0633\u0644\u0627\u0645 \u060c \u062c\u0647\u0627\u0646!&#8221; \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c \u0628\u06af\u0630\u0627\u0631\u06cc\u062f \u0627\u06a9\u0646\u0648\u0646 \u062a\u0648\u0636\u06cc\u062d \u062f\u0647\u0645 \u06a9\u0647 \u0686\u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0634\u06cc\u0621 \u0648\u0627\u0644\u062f\u06cc\u0646 \u0645\u0627\u0644\u06a9\u06cc\u062a \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0648\u0627\u0644\u062f\u06cc\u0646 \u062e\u0648\u062f \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc \u06a9\u0646\u062f \u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0648\u0642\u062a\u06cc \u0648\u0627\u0644\u062f\u06cc\u0646 \u0646\u0627\u0628\u0648\u062f \u0634\u062f\u0646\u062f \u060c \u0646\u06cc\u0632 \u0646\u0627\u0628\u0648\u062f \u0634\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u0627\u0628\u0648\u062f \u06a9\u0646\u0646\u062f\u0647 \u06a9\u0627\u0645\u0644 \u06a9\u0644\u0627\u0633 \u067e\u0627\u06cc\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight cpp\"><code><span class=\"cm\">\/*!\n    Destroys the object, deleting all its child objects.\n\n    All signals to and from the object are automatically disconnected, and\n    any pending posted events for the object are removed from the event\n    queue. However, it is often safer to use deleteLater() rather than\n    deleting a QObject subclass directly.\n\n    \\warning All child objects are deleted. If any of these objects\n    are on the stack or global, sooner or later your program will\n    crash. We do not recommend holding pointers to child objects from\n    outside the parent. If you still do, the destroyed() signal gives\n    you an opportunity to detect when an object is destroyed.\n\n    \\warning Deleting a QObject while it is handling an event\n    delivered to it can cause a crash. You must not delete the QObject\n    directly if it exists in a different thread than the one currently\n    executing. Use deleteLater() instead, which will cause the event\n    loop to delete the object after all pending events have been\n    delivered to it.\n\n    \\sa deleteLater()\n*\/<\/span>\n\n<span class=\"n\">QObject<\/span><span class=\"o\">::~<\/span><span class=\"n\">QObject<\/span><span class=\"p\">()<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"n\">Q_D<\/span><span class=\"p\">(<\/span><span class=\"n\">QObject<\/span><span class=\"p\">);<\/span>\n    <span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">wasDeleted<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">true<\/span><span class=\"p\">;<\/span>\n    <span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">blockSig<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span> <span class=\"c1\">\/\/ unblock signals so we always emit destroyed()<\/span>\n\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">bindingStorage<\/span><span class=\"p\">.<\/span><span class=\"n\">isValid<\/span><span class=\"p\">())<\/span> <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ this might be the case after an incomplete thread-move<\/span>\n        <span class=\"c1\">\/\/ remove this object from the pending list in that case<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">QThread<\/span> <span class=\"o\">*<\/span><span class=\"n\">ownThread<\/span> <span class=\"o\">=<\/span> <span class=\"kr\">thread<\/span><span class=\"p\">())<\/span> <span class=\"p\">{<\/span>\n            <span class=\"k\">auto<\/span> <span class=\"o\">*<\/span><span class=\"n\">privThread<\/span> <span class=\"o\">=<\/span> <span class=\"k\">static_cast<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">QThreadPrivate<\/span> <span class=\"o\">*&gt;<\/span><span class=\"p\">(<\/span>\n                        <span class=\"n\">QObjectPrivate<\/span><span class=\"o\">::<\/span><span class=\"n\">get<\/span><span class=\"p\">(<\/span><span class=\"n\">ownThread<\/span><span class=\"p\">));<\/span>\n            <span class=\"n\">privThread<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">removeObjectWithPendingBindingStatusChange<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c1\">\/\/ If we reached this point, we need to clear the binding data<\/span>\n    <span class=\"c1\">\/\/ as the corresponding properties are no longer useful<\/span>\n    <span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">clearBindingStorage<\/span><span class=\"p\">();<\/span>\n\n    <span class=\"n\">QtSharedPointer<\/span><span class=\"o\">::<\/span><span class=\"n\">ExternalRefCountData<\/span> <span class=\"o\">*<\/span><span class=\"n\">sharedRefcount<\/span> <span class=\"o\">=<\/span> <span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">sharedRefcount<\/span><span class=\"p\">.<\/span><span class=\"n\">loadRelaxed<\/span><span class=\"p\">();<\/span>\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">sharedRefcount<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">sharedRefcount<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">strongref<\/span><span class=\"p\">.<\/span><span class=\"n\">loadRelaxed<\/span><span class=\"p\">()<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n            <span class=\"n\">qWarning<\/span><span class=\"p\">(<\/span><span class=\"s\">\"QObject: shared QObject was deleted directly. The program is malformed and may crash.\"<\/span><span class=\"p\">);<\/span>\n            <span class=\"c1\">\/\/ but continue deleting, it's too late to stop anyway<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"c1\">\/\/ indicate to all QWeakPointers that this QObject has now been deleted<\/span>\n        <span class=\"n\">sharedRefcount<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">strongref<\/span><span class=\"p\">.<\/span><span class=\"n\">storeRelaxed<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"n\">sharedRefcount<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">weakref<\/span><span class=\"p\">.<\/span><span class=\"n\">deref<\/span><span class=\"p\">())<\/span>\n            <span class=\"k\">delete<\/span> <span class=\"n\">sharedRefcount<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">wasWidget<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">isSignalConnected<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">))<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">emit<\/span> <span class=\"n\">destroyed<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">isDeletingChildren<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">declarativeData<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"n\">QAbstractDeclarativeData<\/span><span class=\"o\">::<\/span><span class=\"n\">destroyed<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">QAbstractDeclarativeData<\/span><span class=\"o\">::<\/span><span class=\"n\">destroyed<\/span><span class=\"p\">(<\/span><span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">declarativeData<\/span><span class=\"p\">,<\/span> <span class=\"k\">this<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"n\">QObjectPrivate<\/span><span class=\"o\">::<\/span><span class=\"n\">ConnectionData<\/span> <span class=\"o\">*<\/span><span class=\"n\">cd<\/span> <span class=\"o\">=<\/span> <span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">connections<\/span><span class=\"p\">.<\/span><span class=\"n\">loadAcquire<\/span><span class=\"p\">();<\/span>\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">cd<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">cd<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">currentSender<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n            <span class=\"n\">cd<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">currentSender<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">receiverDeleted<\/span><span class=\"p\">();<\/span>\n            <span class=\"n\">cd<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">currentSender<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">nullptr<\/span><span class=\"p\">;<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"n\">QBasicMutex<\/span> <span class=\"o\">*<\/span><span class=\"n\">signalSlotMutex<\/span> <span class=\"o\">=<\/span> <span class=\"n\">signalSlotLock<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">QMutexLocker<\/span> <span class=\"nf\">locker<\/span><span class=\"p\">(<\/span><span class=\"n\">signalSlotMutex<\/span><span class=\"p\">);<\/span>\n\n        <span class=\"c1\">\/\/ disconnect all receivers<\/span>\n        <span class=\"kt\">int<\/span> <span class=\"n\">receiverCount<\/span> <span class=\"o\">=<\/span> <span class=\"n\">cd<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">signalVectorCount<\/span><span class=\"p\">();<\/span>\n        <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">signal<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span> <span class=\"n\">signal<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">receiverCount<\/span><span class=\"p\">;<\/span> <span class=\"o\">++<\/span><span class=\"n\">signal<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n            <span class=\"n\">QObjectPrivate<\/span><span class=\"o\">::<\/span><span class=\"n\">ConnectionList<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">connectionList<\/span> <span class=\"o\">=<\/span> <span class=\"n\">cd<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">connectionsForSignal<\/span><span class=\"p\">(<\/span><span class=\"n\">signal<\/span><span class=\"p\">);<\/span>\n\n            <span class=\"k\">while<\/span> <span class=\"p\">(<\/span><span class=\"n\">QObjectPrivate<\/span><span class=\"o\">::<\/span><span class=\"n\">Connection<\/span> <span class=\"o\">*<\/span><span class=\"n\">c<\/span> <span class=\"o\">=<\/span> <span class=\"n\">connectionList<\/span><span class=\"p\">.<\/span><span class=\"n\">first<\/span><span class=\"p\">.<\/span><span class=\"n\">loadRelaxed<\/span><span class=\"p\">())<\/span> <span class=\"p\">{<\/span>\n                <span class=\"n\">Q_ASSERT<\/span><span class=\"p\">(<\/span><span class=\"n\">c<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">receiver<\/span><span class=\"p\">.<\/span><span class=\"n\">loadAcquire<\/span><span class=\"p\">());<\/span>\n\n                <span class=\"n\">QBasicMutex<\/span> <span class=\"o\">*<\/span><span class=\"n\">m<\/span> <span class=\"o\">=<\/span> <span class=\"n\">signalSlotLock<\/span><span class=\"p\">(<\/span><span class=\"n\">c<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">receiver<\/span><span class=\"p\">.<\/span><span class=\"n\">loadRelaxed<\/span><span class=\"p\">());<\/span>\n                <span class=\"kt\">bool<\/span> <span class=\"n\">needToUnlock<\/span> <span class=\"o\">=<\/span> <span class=\"n\">QOrderedMutexLocker<\/span><span class=\"o\">::<\/span><span class=\"n\">relock<\/span><span class=\"p\">(<\/span><span class=\"n\">signalSlotMutex<\/span><span class=\"p\">,<\/span> <span class=\"n\">m<\/span><span class=\"p\">);<\/span>\n                <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">c<\/span> <span class=\"o\">==<\/span> <span class=\"n\">connectionList<\/span><span class=\"p\">.<\/span><span class=\"n\">first<\/span><span class=\"p\">.<\/span><span class=\"n\">loadAcquire<\/span><span class=\"p\">()<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"n\">c<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">receiver<\/span><span class=\"p\">.<\/span><span class=\"n\">loadAcquire<\/span><span class=\"p\">())<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"n\">cd<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">removeConnection<\/span><span class=\"p\">(<\/span><span class=\"n\">c<\/span><span class=\"p\">);<\/span>\n                    <span class=\"n\">Q_ASSERT<\/span><span class=\"p\">(<\/span><span class=\"n\">connectionList<\/span><span class=\"p\">.<\/span><span class=\"n\">first<\/span><span class=\"p\">.<\/span><span class=\"n\">loadRelaxed<\/span><span class=\"p\">()<\/span> <span class=\"o\">!=<\/span> <span class=\"n\">c<\/span><span class=\"p\">);<\/span>\n                <span class=\"p\">}<\/span>\n                <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">needToUnlock<\/span><span class=\"p\">)<\/span>\n                    <span class=\"n\">m<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">unlock<\/span><span class=\"p\">();<\/span>\n            <span class=\"p\">}<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"cm\">\/* Disconnect all senders:\n         *\/<\/span>\n        <span class=\"k\">while<\/span> <span class=\"p\">(<\/span><span class=\"n\">QObjectPrivate<\/span><span class=\"o\">::<\/span><span class=\"n\">Connection<\/span> <span class=\"o\">*<\/span><span class=\"n\">node<\/span> <span class=\"o\">=<\/span> <span class=\"n\">cd<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">senders<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n            <span class=\"n\">Q_ASSERT<\/span><span class=\"p\">(<\/span><span class=\"n\">node<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">receiver<\/span><span class=\"p\">.<\/span><span class=\"n\">loadAcquire<\/span><span class=\"p\">());<\/span>\n            <span class=\"n\">QObject<\/span> <span class=\"o\">*<\/span><span class=\"n\">sender<\/span> <span class=\"o\">=<\/span> <span class=\"n\">node<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">sender<\/span><span class=\"p\">;<\/span>\n            <span class=\"c1\">\/\/ Send disconnectNotify before removing the connection from sender's connection list.<\/span>\n            <span class=\"c1\">\/\/ This ensures any eventual destructor of sender will block on getting receiver's lock<\/span>\n            <span class=\"c1\">\/\/ and not finish until we release it.<\/span>\n            <span class=\"n\">sender<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">disconnectNotify<\/span><span class=\"p\">(<\/span><span class=\"n\">QMetaObjectPrivate<\/span><span class=\"o\">::<\/span><span class=\"n\">signal<\/span><span class=\"p\">(<\/span><span class=\"n\">sender<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">metaObject<\/span><span class=\"p\">(),<\/span> <span class=\"n\">node<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">signal_index<\/span><span class=\"p\">));<\/span>\n            <span class=\"n\">QBasicMutex<\/span> <span class=\"o\">*<\/span><span class=\"n\">m<\/span> <span class=\"o\">=<\/span> <span class=\"n\">signalSlotLock<\/span><span class=\"p\">(<\/span><span class=\"n\">sender<\/span><span class=\"p\">);<\/span>\n            <span class=\"kt\">bool<\/span> <span class=\"n\">needToUnlock<\/span> <span class=\"o\">=<\/span> <span class=\"n\">QOrderedMutexLocker<\/span><span class=\"o\">::<\/span><span class=\"n\">relock<\/span><span class=\"p\">(<\/span><span class=\"n\">signalSlotMutex<\/span><span class=\"p\">,<\/span> <span class=\"n\">m<\/span><span class=\"p\">);<\/span>\n            <span class=\"c1\">\/\/the node has maybe been removed while the mutex was unlocked in relock?<\/span>\n            <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">node<\/span> <span class=\"o\">!=<\/span> <span class=\"n\">cd<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">senders<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ We hold the wrong mutex<\/span>\n                <span class=\"n\">Q_ASSERT<\/span><span class=\"p\">(<\/span><span class=\"n\">needToUnlock<\/span><span class=\"p\">);<\/span>\n                <span class=\"n\">m<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">unlock<\/span><span class=\"p\">();<\/span>\n                <span class=\"k\">continue<\/span><span class=\"p\">;<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"n\">QObjectPrivate<\/span><span class=\"o\">::<\/span><span class=\"n\">ConnectionData<\/span> <span class=\"o\">*<\/span><span class=\"n\">senderData<\/span> <span class=\"o\">=<\/span> <span class=\"n\">sender<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">d_func<\/span><span class=\"p\">()<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">connections<\/span><span class=\"p\">.<\/span><span class=\"n\">loadRelaxed<\/span><span class=\"p\">();<\/span>\n            <span class=\"n\">Q_ASSERT<\/span><span class=\"p\">(<\/span><span class=\"n\">senderData<\/span><span class=\"p\">);<\/span>\n\n            <span class=\"n\">QtPrivate<\/span><span class=\"o\">::<\/span><span class=\"n\">QSlotObjectBase<\/span> <span class=\"o\">*<\/span><span class=\"n\">slotObj<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">nullptr<\/span><span class=\"p\">;<\/span>\n            <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">node<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">isSlotObject<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                <span class=\"n\">slotObj<\/span> <span class=\"o\">=<\/span> <span class=\"n\">node<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">slotObj<\/span><span class=\"p\">;<\/span>\n                <span class=\"n\">node<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">isSlotObject<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">false<\/span><span class=\"p\">;<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"n\">senderData<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">removeConnection<\/span><span class=\"p\">(<\/span><span class=\"n\">node<\/span><span class=\"p\">);<\/span>\n            <span class=\"cm\">\/*\n              When we unlock, another thread has the chance to delete\/modify sender data.\n              Thus we need to call cleanOrphanedConnections before unlocking. We use the\n              variant of the function which assumes that the lock is already held to avoid\n              a deadlock.\n              We need to hold m, the sender lock. Considering that we might execute arbitrary user\n              code, we should already release the signalSlotMutex here \u2013 unless they are the same.\n            *\/<\/span>\n            <span class=\"k\">const<\/span> <span class=\"kt\">bool<\/span> <span class=\"n\">locksAreTheSame<\/span> <span class=\"o\">=<\/span> <span class=\"n\">signalSlotMutex<\/span> <span class=\"o\">==<\/span> <span class=\"n\">m<\/span><span class=\"p\">;<\/span>\n            <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"n\">locksAreTheSame<\/span><span class=\"p\">)<\/span>\n                <span class=\"n\">locker<\/span><span class=\"p\">.<\/span><span class=\"n\">unlock<\/span><span class=\"p\">();<\/span>\n            <span class=\"n\">senderData<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">cleanOrphanedConnections<\/span><span class=\"p\">(<\/span>\n                        <span class=\"n\">sender<\/span><span class=\"p\">,<\/span>\n                        <span class=\"n\">QObjectPrivate<\/span><span class=\"o\">::<\/span><span class=\"n\">ConnectionData<\/span><span class=\"o\">::<\/span><span class=\"n\">AlreadyLockedAndTemporarilyReleasingLock<\/span>\n                        <span class=\"p\">);<\/span>\n            <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">needToUnlock<\/span><span class=\"p\">)<\/span>\n                <span class=\"n\">m<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">unlock<\/span><span class=\"p\">();<\/span>\n\n            <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">locksAreTheSame<\/span><span class=\"p\">)<\/span> <span class=\"c1\">\/\/ otherwise already unlocked<\/span>\n                <span class=\"n\">locker<\/span><span class=\"p\">.<\/span><span class=\"n\">unlock<\/span><span class=\"p\">();<\/span>\n            <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">slotObj<\/span><span class=\"p\">)<\/span>\n                <span class=\"n\">slotObj<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">destroyIfLastRef<\/span><span class=\"p\">();<\/span>\n            <span class=\"n\">locker<\/span><span class=\"p\">.<\/span><span class=\"n\">relock<\/span><span class=\"p\">();<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"c1\">\/\/ invalidate all connections on the object and make sure<\/span>\n        <span class=\"c1\">\/\/ activate() will skip them<\/span>\n        <span class=\"n\">cd<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">currentConnectionId<\/span><span class=\"p\">.<\/span><span class=\"n\">storeRelaxed<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">cd<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"o\">!<\/span><span class=\"n\">cd<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">ref<\/span><span class=\"p\">.<\/span><span class=\"n\">deref<\/span><span class=\"p\">())<\/span>\n        <span class=\"k\">delete<\/span> <span class=\"n\">cd<\/span><span class=\"p\">;<\/span>\n    <span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">connections<\/span><span class=\"p\">.<\/span><span class=\"n\">storeRelaxed<\/span><span class=\"p\">(<\/span><span class=\"nb\">nullptr<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">children<\/span><span class=\"p\">.<\/span><span class=\"n\">isEmpty<\/span><span class=\"p\">())<\/span>\n        <span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">deleteChildren<\/span><span class=\"p\">();<\/span>\n\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">Q_UNLIKELY<\/span><span class=\"p\">(<\/span><span class=\"n\">qtHookData<\/span><span class=\"p\">[<\/span><span class=\"n\">QHooks<\/span><span class=\"o\">::<\/span><span class=\"n\">RemoveQObject<\/span><span class=\"p\">]))<\/span>\n        <span class=\"k\">reinterpret_cast<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">QHooks<\/span><span class=\"o\">::<\/span><span class=\"n\">RemoveQObjectCallback<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"n\">qtHookData<\/span><span class=\"p\">[<\/span><span class=\"n\">QHooks<\/span><span class=\"o\">::<\/span><span class=\"n\">RemoveQObject<\/span><span class=\"p\">])(<\/span><span class=\"k\">this<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"n\">Q_TRACE<\/span><span class=\"p\">(<\/span><span class=\"n\">QObject_dtor<\/span><span class=\"p\">,<\/span> <span class=\"k\">this<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">parent<\/span><span class=\"p\">)<\/span>        <span class=\"c1\">\/\/ remove it from parent object<\/span>\n        <span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">setParent_helper<\/span><span class=\"p\">(<\/span><span class=\"nb\">nullptr<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0647 \u0632\u0628\u0627\u0646 \u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0633\u0627\u062f\u0647 \u060c \u067e\u0646\u062c \u0645\u0631\u062d\u0644\u0647 \u0645\u0647\u0645 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f:<\/p>\n<ol>\n<li>\u06a9\u0627\u0631\u0622\u0632\u0645\u0627\u06cc\u06cc <code>QWeakPointer<t\/><\/code> \u0645\u0646\u0627\u0628\u0639 \u0636\u0639\u06cc\u0641 \u061b<\/li>\n<li>\u0633\u06cc\u06af\u0646\u0627\u0644 \u0631\u0627 \u0645\u0646\u062a\u0634\u0631 \u06a9\u0646\u06cc\u062f <code>QObject::destroyed<\/code>\u061b<\/li>\n<li>\u0647\u0645\u0647 \u0627\u062a\u0635\u0627\u0644\u0627\u062a \u0634\u06a9\u0627\u0641 \u0633\u06cc\u06af\u0646\u0627\u0644 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0631\u0627 \u0642\u0637\u0639 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u06a9\u0648\u062f\u06a9\u0627\u0646 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f \u0648\u062a<\/li>\n<li>\u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u0634\u06cc\u0621 \u0648\u0627\u0644\u062f\u06cc\u0646 \u062e\u0627\u0631\u062c \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ol>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u060c \u0627\u06af\u0631 \u0645\u0627 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0686\u0646\u06cc\u0646 \u0641\u0631\u0627\u06cc\u0646\u062f\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f \u060c \u0628\u0633\u06cc\u0627\u0631 \u0631\u0627\u062d\u062a \u062a\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f. \u06a9\u0644\u0627\u0633 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0647\u0645\u0627\u0646 \u0627\u0646\u062f\u0627\u0632\u0647 \u0646\u0638\u0627\u0631\u062a \u06a9\u0646\u062f <code>QObject<\/code> \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631\u0633\u062a \u0645\u062b\u0644 <code>QPointer<t\/><\/code>\u060c \u0648 \u0627\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0627\u0641\u0638\u0647 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0631\u0627 \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u0627\u0646\u0646\u062f \u0646\u0634\u0627\u0646 \u062f\u0647\u062f <code>QScopedPointer<t\/><\/code>\u0628\u0634\u0631<\/p>\n<p>\u0645\u0639\u0631\u0641\u06cc: <code>QObjectCleanupHandler<\/code>\u0628\u0634\u0631<\/p>\n<p>\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>QObjectCleanupHandler::add<\/code> \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 \u0634\u06cc \u060c <code>isEmpty<\/code> \u0628\u0631\u0627\u06cc \u062a\u0639\u06cc\u06cc\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u0647\u0646\u0648\u0632 \u0632\u0646\u062f\u06af\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f <code>QObject<\/code>\u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u0645\u0647 \u0627\u0634\u06cc\u0627\u0621 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u067e\u0627\u06a9 \u06a9\u0646\u06cc\u062f <code>QObjectCleanupHandler::clear<\/code>\u0628\u0634\u0631<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B9%D9%85%D9%84%DB%8C_%D9%88_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-2\"><\/span>\n<p>  \u0639\u0645\u0644\u06cc \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0646 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0639\u0645\u0648\u0644 \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062f\u06cc\u0631 \u0645\u0646\u0628\u0639 \u0645\u06cc \u0633\u0627\u0632\u0645 \u0648 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc \u06a9\u0646\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0646\u06cc\u0632 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f. \u0627\u06af\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0646\u0641\u0631 \u062f\u0627\u0631\u06cc\u062f <code>QObject<\/code>\u0634\u0645\u0627 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u06cc\u06a9\u0633\u0627\u0646 \u0647\u0633\u062a\u0646\u062f \u060c \u0634\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f <code>QObjectCleanupHandler<\/code>\u0628\u0634\u0631 \u0645\u0646 \u0634\u062e\u0635\u0627\u064b \u0641\u06a9\u0631 \u0645\u06cc \u06a9\u0646\u0645 \u0627\u06cc\u0646 \u06cc\u06a9\u06cc \u0645\u0641\u06cc\u062f \u0627\u0633\u062a.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u0645\u06cc\u0646\u06cc\u0645\u0627\u0644\u06cc\u0633\u062a\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight cpp\"><code><span class=\"kt\">void<\/span> <span class=\"n\">SomethingsManager<\/span><span class=\"o\">::<\/span><span class=\"n\">run<\/span><span class=\"p\">()<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"n\">Manager<\/span> <span class=\"o\">*<\/span><span class=\"n\">m1<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"n\">Manager<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">);<\/span>\n    <span class=\"c1\">\/\/ ...<\/span>\n    <span class=\"c1\">\/\/ ...<\/span>\n    <span class=\"n\">QObjectCleanupHandler<\/span> <span class=\"n\">cleanup<\/span><span class=\"p\">;<\/span>\n    <span class=\"n\">cleanup<\/span><span class=\"p\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">m1<\/span><span class=\"p\">);<\/span>\n    <span class=\"n\">cleanup<\/span><span class=\"p\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">m2<\/span><span class=\"p\">);<\/span>\n    <span class=\"c1\">\/\/ ...<\/span>\n\n    <span class=\"n\">exec<\/span><span class=\"p\">();<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u0633\u062a\u0631\u0627\u062d\u062a \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0647 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0627\u0633\u0646\u0627\u062f C ++ \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0645\u0641\u0647\u0648\u0645 \u0622\u0646 \u0631\u0627 \u062f\u0631\u06a9 \u06a9\u0646\u06cc\u062f <code>std::unique_ptr<\/code> \u0648\u062a <code>std::shared_ptr<\/code>\u060c \u0648 \u063a\u06cc\u0631\u0647<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;\u0646\u0634\u0627\u0646\u06af\u0631\u0647\u0627 \u0645\u0648\u062c\u0648\u062f\u0627\u062a \u0633\u0627\u062f\u0647 \u0647\u0633\u062a\u0646\u062f. \u0622\u0646\u0647\u0627 \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u0627\u0646\u0646\u062f \u06cc\u0648\u0646 \u0647\u0627 \u0628\u0648\u062f\u0646\u062f: \u0627\u06af\u0631 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u062c\u0627\u06cc\u06cc \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f \u060c \u0622\u0646\u0647\u0627 \u062f\u0631 \u062c\u0627\u06cc\u06cc \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f \u060c \u0648 \u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u0627\u0633\u062a. \u0645\u0646 \u0645\u0646 \u0641\u06a9\u0631 \u0645\u06cc \u06a9\u0646\u0645 \u0627\u06af\u0631 \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f \u0646\u0627\u0627\u0645\u06cc\u062f \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f: \u0627\u06cc\u0646 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0646\u062a\u06cc\u062c\u0647 \u0646\u0648\u0639\u06cc \u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u0646\u0637\u0642 \u0627\u062c\u0631\u0627 \u0639\u062c\u06cc\u0628 \u0628\u0627\u0634\u062f. \u0646\u0642\u0644 \u0642\u0648\u0644 \u0634\u0631\u0648\u0639 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":99573,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/media2.dev.to\/dynamic\/image\/width=1000,height=500,fit=cover,gravity=auto,format=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frfp5slwi3764fmm9v5qz.png","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-99572","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/99572","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=99572"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/99572\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/99573"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=99572"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=99572"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=99572"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}