C 언어
같은 클래스에 Zara라는 이름을 가진 두 사람이 있다고 가정해 보겠습니다. 확실히 구별해야 할 때마다 이름과 함께 지역, 다른 지역에 사는지 또는 어머니나 아버지의 이름 등의 추가 정보를 사용해야 합니다.
C++ 애플리케이션에서도 동일한 상황이 발생할 수 있습니다. 예를 들어, xyz()라는 함수가 있는 코드를 작성 중일 수 있으며 동일한 함수 xyz()를 사용하는 다른 라이브러리를 사용할 수 있습니다. 이제 컴파일러는 코드 내에서 참조하는 xyz() 함수의 버전을 알 방법이 없습니다.
네임스페이스 이 어려움을 극복하기 위해 설계되었으며 다른 라이브러리에서 사용할 수 있는 동일한 이름을 가진 유사한 기능, 클래스, 변수 등을 구별하기 위한 추가 정보로 사용됩니다. 네임스페이스를 사용하여 이름이 정의되는 컨텍스트를 정의할 수 있습니다. 본질적으로 네임스페이스는 범위를 정의합니다.
네임스페이스 정의는 namespace 키워드로 시작합니다. 다음과 같이 네임스페이스 이름이 옵니다 -
namespace namespace_name { // code declarations }
함수 또는 변수의 네임스페이스 사용 버전을 호출하려면 다음과 같이 네임스페이스 이름을 앞에 추가(::)하십시오 -
name::code; // code could be variable or function.
네임스페이스가 변수와 함수를 포함한 엔티티의 범위를 어떻게 지정하는지 봅시다 -
라이브 데모#include <iostream> using namespace std; // first name space namespace first_space { void func() { cout << "Inside first_space" << endl; } } // second name space namespace second_space { void func() { cout << "Inside second_space" << endl; } } int main () { // Calls function from first name space. first_space::func(); // Calls function from second name space. second_space::func(); return 0; }
위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -
Inside first_space Inside second_space
또한 using namespace로 네임스페이스 앞에 오는 것을 방지할 수 있습니다. 지령. 이 지시문은 후속 코드가 지정된 네임스페이스의 이름을 사용하고 있음을 컴파일러에 알립니다. 따라서 네임스페이스는 다음 코드에 대해 암시됩니다. -
라이브 데모#include <iostream> using namespace std; // first name space namespace first_space { void func() { cout << "Inside first_space" << endl; } } // second name space namespace second_space { void func() { cout << "Inside second_space" << endl; } } using namespace first_space; int main () { // This calls function from first name space. func(); return 0; }
위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -
Inside first_space
'using' 지시문은 네임스페이스 내의 특정 항목을 참조하는 데에도 사용할 수 있습니다. 예를 들어 사용하려는 std 네임스페이스의 유일한 부분이 cout인 경우 다음과 같이 참조할 수 있습니다. -
using std::cout;
후속 코드는 네임스페이스를 추가하지 않고 cout을 참조할 수 있지만 std 의 다른 항목은 네임스페이스는 여전히 다음과 같이 명시적이어야 합니다. -
라이브 데모#include <iostream> using std::cout; int main () { cout << "std::endl is used with std!" << std::endl; return 0; }
위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -
std::endl is used with std!
사용에 소개된 이름 지시문은 일반 범위 규칙을 따릅니다. 이름은 사용 지점에서 볼 수 있습니다. 지시문이 있는 범위의 끝까지 지시문. 외부 범위에 정의된 동일한 이름을 가진 엔티티는 숨겨집니다.
네임스페이스는 여러 부분으로 정의될 수 있으므로 네임스페이스는 별도로 정의된 부분의 합으로 구성됩니다. 네임스페이스의 개별 부분은 여러 파일에 분산될 수 있습니다.
따라서 네임스페이스의 한 부분에 다른 파일에 정의된 이름이 필요한 경우 해당 이름을 계속 선언해야 합니다. 다음 네임스페이스 정의를 작성하면 새 네임스페이스를 정의하거나 기존 네임스페이스에 새 요소를 추가합니다. -
namespace namespace_name { // code declarations }
네임스페이스는 다음과 같이 다른 네임스페이스 안에 하나의 네임스페이스를 정의할 수 있는 중첩될 수 있습니다. -
namespace namespace_name1 { // code declarations namespace namespace_name2 { // code declarations } }
다음과 같이 확인 연산자를 사용하여 중첩된 네임스페이스의 멤버에 액세스할 수 있습니다. -
// to access members of namespace_name2 using namespace namespace_name1::namespace_name2; // to access members of namespace:name1 using namespace namespace_name1;
위의 명령문에서 namespace_name1을 사용하는 경우 다음과 같이 범위에서 namespace_name2의 요소를 사용할 수 있습니다. -
라이브 데모#include <iostream> using namespace std; // first name space namespace first_space { void func() { cout << "Inside first_space" << endl; } // second name space namespace second_space { void func() { cout << "Inside second_space" << endl; } } } using namespace first_space::second_space; int main () { // This calls function from second name space. func(); return 0; }
위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -
Inside second_space
C 언어
C++ 연산자 오버로딩 이 튜토리얼에서는 예제를 통해 연산자 오버로딩에 대해 배울 것입니다. C++에서는 객체 및 구조와 같은 사용자 정의 유형에 대해 연산자가 작동하는 방식을 변경할 수 있습니다. 이를 연산자 과부하라고 합니다. . 예를 들어, 세 개의 객체 c1를 생성했다고 가정합니다. , c2 및 결과 Complex이라는 클래스에서 복소수를 나타냅니다. 연산자 오버로딩을 통해 연산자의 작동 방식을 변경할 수 있으므로 + 연산자가 작동하고 이를 사용하여 c1의 복소수를 추가합니다. 및 c2 다음 코드를 작성하여: resu
C++ 상속 이 튜토리얼에서는 예제를 통해 C++의 상속에 대해 배웁니다. 상속은 C++에서 객체 지향 프로그래밍의 핵심 기능 중 하나입니다. 기존 클래스(기본 클래스)에서 새 클래스(파생 클래스)를 만들 수 있습니다. 파생 클래스는 기본 클래스의 기능을 상속합니다. 고유한 추가 기능을 가질 수 있습니다. 예를 들어, class Animal { // eat() function // sleep() function }; class Dog : public Animal { // bark() function };