"도움말 기능"이라는 용어를 명확하게하십시오. 하나의 정의는 작업을 수행하기 위해 항상 사용하는 편의 기능입니다. 이것들은 메인 네임 스페이스에 존재할 수 있고 자체 헤더 등을 가질 수 있습니다. 다른 도우미 함수 정의는 단일 클래스 또는 클래스 패밀리를위한 유틸리티 함수입니다.
// 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 가지 이상의 헤더로 범주별로 나눕니다. 자신의.
실제로 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
키워드 에 대해 배웠 습니까?