C++ Academy · पाठ

optional से अनुपस्थिति दर्शाना

नल पॉइंटर से बचें

पाठ 1, कुल 4 में से13 चरण

optional से अनुपस्थिति दर्शाना, CoddyKit पर C++ Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह C++ Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

Null की समस्या

"कोई मान नहीं" दर्शाने के लिए -1 या null पॉइंटर जैसे संकेतक लौटाना नाज़ुक होता है और उसका गलत उपयोग आसानी से हो सकता है। std::optional<T> स्पष्ट रूप से "एक मान या कुछ नहीं" दर्शाता है। <optional> शामिल करें।

#include <iostream>
#include <optional>
int main() {
    std::optional<int> maybe = 42;
    std::cout << *maybe << "\n";
}

एक खाली Optional

किसी optional का डिफ़ॉल्ट निर्माण करने या उसे std::nullopt देने पर वह खाली हो जाता है और उसमें कोई मान नहीं रहता।

#include <iostream>
#include <optional>
int main() {
    std::optional<int> empty;
    std::optional<int> also = std::nullopt;
    std::cout << empty.has_value() << " " << also.has_value() << "\n";
}

किसी मान की जाँच

यह जाँचने के लिए कि उसमें कुछ मौजूद है या नहीं, has_value() को कॉल करें या optional का सीधे बूलियन संदर्भ में उपयोग करें।

#include <iostream>
#include <optional>
int main() {
    std::optional<int> o = 5;
    if (o) std::cout << "has value\n";
    if (o.has_value()) std::cout << "yes\n";
}

रिटर्न प्रकार के रूप में Optional

जो फ़ंक्शन परिणाम देने में विफल हो सकते हैं, उनके लिए यह एकदम उपयुक्त है। सफलता पर मान लौटाएँ और विफलता पर std::nullopt लौटाएँ।

#include <iostream>
#include <optional>
std::optional<int> half(int n) {
    if (n % 2 == 0) return n / 2;
    return std::nullopt;
}
int main() {
    auto r = half(10);
    if (r) std::cout << *r << "\n";
}

मान पढ़ना

जब आपको पता हो कि इसमें मान है, तब *opt या opt.value() का उपयोग करें। * से खाली optional को डीरेफ़रेंस करना अपरिभाषित व्यवहार है।

#include <iostream>
#include <optional>
int main() {
    std::optional<std::string_view> name = "Ada";
    if (name) std::cout << *name << "\n";
}

स्वयं-व्याख्यात्मक हस्ताक्षर

std::optional का रिटर्न प्रकार एक नज़र में कॉल करने वाले को बता देता है कि फ़ंक्शन शायद परिणाम न दे; किसी टिप्पणी की आवश्यकता नहीं होती।

#include <iostream>
#include <optional>
#include <string>
std::optional<std::string> getEnvName(bool present) {
    if (present) return std::string("CONFIG");
    return std::nullopt;
}
int main() { std::cout << getEnvName(true).has_value() << "\n"; }

Optional को रीसेट करना

Optional को फिर से खाली करने के लिए reset() को कॉल करें या उसे std::nullopt दें।

#include <iostream>
#include <optional>
int main() {
    std::optional<int> o = 99;
    o.reset();
    std::cout << o.has_value() << "\n"; // 0
}

जगह पर निर्माण

emplace optional के अंदर ही रखे जाने वाले मान का निर्माण करता है और अतिरिक्त कॉपी से बचाता है।

#include <iostream>
#include <optional>
#include <string>
int main() {
    std::optional<std::string> o;
    o.emplace("built in place");
    std::cout << *o << "\n";
}

Optional बनाम पॉइंटर

कच्चा पॉइंटर null हो सकता है, लेकिन वह स्वामित्व के बारे में कुछ नहीं बताता और उसके लटकता हुआ पॉइंटर बनने का जोखिम रहता है। Optional अपने मान का स्वामित्व मान के रूप में रखता है और हीप आवंटन के बिना "शायद अनुपस्थित" को स्पष्ट रूप से दर्शाता है।

क्या References का Optional हो सकता है

std::optional मान रखता है, संदर्भ नहीं। किसी मौजूदा वस्तु को वैकल्पिक रूप से संदर्भित करने के लिए पॉइंटर रखें या std::optional<std::reference_wrapper<T>> का उपयोग करें।

Optional का उपयोग कब करें

इसका उपयोग उन खोजों के लिए करें जिनमें परिणाम न मिले, ऐसी पार्सिंग के लिए करें जो विफल हो सकती है, या ऐसी सेटिंग्स के लिए करें जिन्हें निर्धारित न किया गया हो। अगला पाठ रखे गए मान को ऐक्सेस करने के सुरक्षित तरीकों को समझाता है।

त्वरित जाँच

std::optional के बारे में अपनी समझ जाँचिए।

पुनरावलोकन

आपने std::optional की मूल बातें सीखीं:

  • यह संकेतकों या null के बिना "एक मान या कुछ नहीं" दर्शाता है।
  • डिफ़ॉल्ट निर्माण या std::nullopt से खाली किया जा सकता है।
  • has_value() या बूलियन जाँच से इसकी जाँच करें।
  • विफल हो सकने वाली खोजों के रिटर्न प्रकार के रूप में यह आदर्श है।
शुरुआत निःशुल्क

एआई शिक्षक के साथ C++ सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
51
पाठ
203

अक्सर पूछे जाने वाले प्रश्न

क्या “optional से अनुपस्थिति दर्शाना” पाठ निःशुल्क है?

हाँ — C++ Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “optional से अनुपस्थिति दर्शाना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“optional से अनुपस्थिति दर्शाना” में मैं क्या सीखूँगा?

नल पॉइंटर से बचें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C++ Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या C++ Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C++ Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“optional से अनुपस्थिति दर्शाना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस C++ Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर C++ Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. optional से अनुपस्थिति दर्शाना
  2. optional मानों तक पहुँच
  3. std::expected की मूल बातें
  4. त्रुटि-संभालने के पैटर्न
← C++ Academy पर वापस जाएँ