ยกเลิกการตีความคำว่า "ฟังก์ชันผู้ช่วย" คำจำกัดความเดียวคือฟังก์ชั่นอำนวยความสะดวกที่คุณใช้ตลอดเวลาเพื่อให้งานเสร็จ สิ่งเหล่านี้สามารถอาศัยอยู่ในเนมสเปซหลักและมีส่วนหัวของตัวเอง ฯลฯ นิยามฟังก์ชันตัวช่วยอื่น ๆ เป็นฟังก์ชันยูทิลิตี้สำหรับคลาสเดี่ยวหรือตระกูลคลาส
// 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();
เพื่อความชัดเจนมากขึ้น
C ++ STL มีstd::
เนมสเปซซึ่งครอบคลุมเกือบทุกคลาสและฟังก์ชั่นของมัน แต่มันแบ่งออกเป็นส่วนหัวมากกว่า 17 ส่วนหัวที่แตกต่างกันเพื่อให้ coder ได้รับชื่อคลาสชื่อฟังก์ชั่นและอื่น ๆ หากพวกเขาต้องการเขียน ด้วยตัวของพวกเขาเอง.
ในความเป็นจริงมันจะไม่แนะนำให้ใช้ในไฟล์ส่วนหัวหรือเป็นจะทำมักจะเป็นภายในบรรทัดแรกusing namespace std;
เป็น 5 ตัวอักษรและมักจะเป็นงานที่น่าเบื่อที่จะนำหน้าฟังก์ชั่นที่ต้องการใช้ (โดยเฉพาะและ!) แต่มันก็มีจุดประสงค์main()
std::
std::cout
std::endl
C ++ 11 ใหม่มีเนมสเปซย่อยบางรายการอยู่ในนั้นสำหรับบริการพิเศษเช่น
std::placeholders,
std::string_literals,
std::chrono,
std::this_thread,
std::regex_constants
ที่สามารถนำมาใช้งานได้
เทคนิคที่มีประโยชน์เป็นองค์ประกอบ namespace หนึ่งกำหนดเนมสเปซที่กำหนดเองเพื่อเก็บเนมสเปซที่คุณต้องการสำหรับ.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
คำหลักแล้วหรือยัง