नीचे कोड में 5 बार की बजाय नोड विनाशक को केवल एक बार क्यों बुलाया जाता है?स्मार्ट पॉइंटर्स विनाशक का वेक्टर
#include <iostream>
#include <vector>
#include <memory>
struct Node {
~Node() {std::cout << "Node destructor called.\n";}
};
void foo() {
std::vector<std::shared_ptr<Node>> nodes(5, std::make_shared<Node>());
}
int main() {
foo();
std::cout << "foo() ended.\n";
}
@prestokeys: ऐसा लगता है कि आप किसी भी तरह कोड एक * मैक्रो * कि किसी तरह से टेक्स्ट प्रत्येक तत्व निर्माता में तर्क अभिव्यक्ति डुप्लिकेट की तरह काम करने के लिए उम्मीद कर रहे थे। लेकिन यह मामला नहीं है; अभिव्यक्ति का मूल्यांकन * एक बार * और कन्स्ट्रक्टर पैरामीटर से जुड़ा हुआ है। मुझे लगता है कि अभिव्यक्ति मूल्यांकन और मैक्रोज़ के बीच अंतर है, और यही कारण है कि मैक्रोज़ होना अभी भी अच्छा है। योजना जैसी भाषाएं आपको यह ठीक से करने देती हैं। –