"हेल्पर फंक्शन" शब्द की अवहेलना करें। एक परिभाषा एक सुविधा फ़ंक्शन है जिसका उपयोग आप हर समय बस कुछ काम करने के लिए करते हैं। वे मुख्य नाम स्थान में रह सकते हैं और उनके स्वयं के हेडर आदि हो सकते हैं। अन्य सहायक फ़ंक्शन की परिभाषा एकल वर्ग या वर्ग परिवार के लिए एक उपयोगिता फ़ंक्शन है।
// a general helper
template <class T>
bool isPrinter(T& p){
return (dynamic_cast<Printer>(p))? true: false;
}
// specific helper for printers
namespace printer_utils {
namespace HP {
print_alignment_page() { printAlignPage();}
}
namespace Xerox {
print_alignment_page() { Alignment_Page_Print();}
}
namespace Canon {
print_alignment_page() { AlignPage();}
}
namespace Kyocera {
print_alignment_page() { Align(137,4);}
}
namespace Panasonic {
print_alignment_page() { exec(0xFF03); }
}
} //namespace
अब isPrinter
इसके हेडर सहित किसी भी कोड के लिए उपलब्ध है, लेकिन print_alignment_page
एक using namespace printer_utils::Xerox;
निर्देश की आवश्यकता है
। कोई भी इसे संदर्भित कर सकता है
Canon::print_alignment_page();
अधिक स्पष्ट होना।
सी ++ एसटीएल में std::
नेमस्पेस है जो लगभग सभी वर्गों और कार्यों को शामिल करता है, लेकिन यह उन्हें कोडर की अनुमति देने के लिए 17 से अधिक विभिन्न हेडर में श्रेणीबद्ध रूप से तोड़ता है, अगर वे लिखना चाहते हैं तो कोड नाम, फ़ंक्शन नाम, आदि से बाहर निकल सकते हैं। उनका अपना।
वास्तव में, using namespace std;
हेडर फ़ाइल में उपयोग करने की अनुशंसा नहीं की जाती है या, जैसा कि अक्सर किया जाता है, अंदर की पहली पंक्ति के रूप में main()
। std::
5 पत्र है और अक्सर (विशेष रूप से उपयोग करने के लिए समारोह चाहता प्रस्तावना के लिए एक घर का काम लगता है std::cout
और std::endl
!) लेकिन यह एक उद्देश्य पूरा करता है।
नई C ++ 11 में कुछ उप-नामस्थान हैं जैसे कि विशेष सेवाओं के लिए
std::placeholders,
std::string_literals,
std::chrono,
std::this_thread,
std::regex_constants
जिसे उपयोग के लिए लाया जा सकता है।
एक उपयोगी तकनीक नेमस्पेस रचना है । एक कस्टम नेमस्पेस को परिभाषित करता है कि आपको अपने विशेष .cpp
फ़ाइल के लिए आवश्यक नामस्थान रखने के लिए और using
प्रत्येक नामस्थान में प्रत्येक चीज़ के लिए कथनों के एक समूह के बजाय उपयोग करने की आवश्यकता होती है।
#include <iostream>
#include <string>
#include <vector>
namespace Needed {
using std::vector;
using std::string;
using std::cout;
using std::endl;
}
int main(int argc, char* argv[])
{
/* using namespace std; */
// would avoid all these individual using clauses,
// but this way only these are included in the global
// namespace.
using namespace Needed; // pulls in the composition
vector<string> str_vec;
string s("Now I have the namespace(s) I need,");
string t("But not the ones I don't.");
str_vec.push_back(s);
str_vec.push_back(t);
cout << s << "\n" << t << endl;
// ...
यह तकनीक संपूर्ण के लिए जोखिम को सीमित करती है std:: namespace
( यह बड़ा है! ) और किसी को सबसे आम कोड लाइनों के लिए क्लीनर कोड लिखने की अनुमति देता है जो लोग सबसे अधिक बार लिखते हैं।
static
कीवर्ड के बारे में सीखा है ?