नहीं।
ठीक है, हाँ, इस अर्थ में कि ऐसे लोग मौजूद हैं जो एक ऑपरेटर के रूप new
में विचार करते हैं new int
। हालांकि, यह राय मानक के साथ बाधाओं पर (ज्यादातर) है।
सबसे पहले, [lex.operators/1]
भाषा में ऑपरेटरों को सूचीबद्ध करता है। यह सोचकर मूर्ख मत बनो कि ये "प्रीप्रोसेसिंग ऑपरेटर" हैं, या तो; शाब्दिक संचालकों के अर्थ में ऐसा कोई भेद नहीं है । यह समझ में नहीं आता है, या तो, क्योंकि आप (उदाहरण के लिए) ++
एक मैक्रो नहीं कर सकते ।
new
वास्तव में, एक खोजशब्द (प्रति [lex.key/1]
) है।
इसके बाद, हम नई अभिव्यक्ति को देखते हैं। यह वह जगह है जहाँ चीजें थोड़ी अधिक ऊनी हो जाती हैं। उदाहरण के लिए, निम्नलिखित शब्द निम्नलिखित है [expr.new/4]
:
इसके बजाय, नए ऑपरेटर के स्पष्ट रूप से संक्षिप्त संस्करण का उपयोग यौगिक प्रकारों की वस्तुओं को बनाने के लिए किया जा सकता है
मैं इसे एक संपादकीय त्रुटि मानता हूं, क्योंकि यह ऊपर दी गई परिभाषाओं के साथ है, और उस खंड में कहीं और नहीं होता है।
फिर हम ऑपरेटर को ओवरलोडिंग पर आते हैं । ऑपरेटर घोषणा के लिए इसके व्याकरणिक उत्पादन में, टर्मिनल लिस्टिंग चीजों (सहित new
) को ऑपरेटर ( [over.oper.general/1]
) नाम दिया गया है । मुझे नहीं लगता कि हमें इस बारे में चिंता करने की आवश्यकता है। व्याकरण में टर्मिनलों के नाम का कभी भी शब्दों की परिभाषा प्रस्तुत करने का इरादा नहीं है। आखिरकार, आपके पास और अभिव्यक्ति है कि _does बिटवाइज़ और ऑपरेशन करने की आवश्यकता नहीं है; यह सिर्फ एक समानता-अभिव्यक्ति हो सकती है :
और अभिव्यक्ति :
समानता-अभिव्यक्ति
और अभिव्यक्ति &
समानता-अभिव्यक्ति
इस तरह के व्याकरणों को परिभाषित करना आम है, और यह निश्चित रूप से इसका मतलब यह नहीं है कि प्रत्येक समानता-अभिव्यक्ति को किसी भी तरह से बिटवाइज़ और ऑपरेटर के आह्वान माना जाना चाहिए।
अंत में, कुछ ने दावा किया है कि निम्नलिखित शब्दांकन (ऑपरेटर ओवरलोडिंग सेक्शन में भी) इस बात का प्रमाण है कि new
किसी तरह अब, अलगाव में, जादुई रूप से एक ऑपरेटर है:
ऑपरेटरों new[]
, delete[]
, ()
, और []
एक से अधिक टोकन से बनते हैं
उनके लिए मैं कहता हूं, न केवल new
सूचीबद्ध नहीं है, लेकिन यह "ऑपरेटर" शब्द का स्पष्ट रूप से "व्यापक रूप से" उन चीजों का उपयोग कर रहा है जो अतिभारित हो सकते हैं ", भले ही new
अपने आप में अभी भी एक ऑपरेटर नहीं है । यह एक गैर-मानक नोट में भी है, जिसे आपको उन सभी को बताना चाहिए जो आपको जानना चाहिए।
और, जैसा कि आप खुद को इंगित करते हैं, हम पहले operator new
से ही कुछ और मानते हैं।
new
की तरहsizeof
है। और मुझे लगता है कि C ++ समुदाय के अधिकांश लोगsizeof
एक ऑपरेटर के रूप में सोचते हैं ।sizeof
इसके प्रभावों का वर्णन करते समय स्टैंसर " ऑपरेटर" को भी संदर्भित करता है ।