내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Pirate Cat Ou의 블로그에 오신 것을 환영합니다——
긴 휴식 후에도 계속해서 열심히 공부합시다!
목차
C/C++에는 나중에 학습해야 할 변수, 함수, 클래스가 많이 있습니다. 이러한 변수, 함수, 클래스의 이름은 모두 전역 범위에 존재하므로 많은 충돌이 발생할 수 있습니다.네임스페이스를 사용하는 목적은 이름 충돌이나 이름 오염을 방지하기 위해 식별자 이름을 지역화하는 것입니다.
즉, 동일한 프로젝트에 동일한 이름을 가진 변수가 여러 개 있을 경우 이름 충돌이나 이름 오염을 방지하고 구별도 용이하게 할 수 있습니다. 대규모 프로젝트 개발에 있어 필수불가결한 요소라고 할 수 있습니다.
네임스페이스는 네임스페이스의 키워드입니다. 키워드 뒤에 네임스페이스 이름을 추가하고, 범위를 제한하려면 {}를 추가하세요.
namespace hdmo { int a = 1; }알아채다: 네임스페이스의 마지막 ' } ' 뒤에 ' ; '를 추가할 필요가 없습니다. 이는 구조와 다르며 함수와 유사합니다.
네임스페이스의 본질은 전역 범위와 독립적인 도메인을 만드는 것입니다. 모든 함수에 범위가 있는 것처럼 각 함수의 매개변수 범위도 함수 범위 내에 있습니다.각각의 네임스페이스도 마찬가지입니다.네임스페이스 내 함수, 변수 등의 범위는 네임스페이스의 한정된 범위 내이므로 네임스페이스를 호출하여 사용해야 합니다., 그러나 주목해야 할 점은네임스페이스 등의 함수 변수는 전역 수명 주기를 갖습니다.
네임스페이스는 전역 범위에서만 정의할 수 있으며 중첩될 수도 있습니다.
동일한 프로젝트에서 동일한 이름을 가진 네임스페이스는 동일한 네임스페이스로 간주됩니다.
namespace hdmo { int a = 1; } namespace hdmo { int b = 1; }이때 두 개의 hdmo는 동일한 네임스페이스를 나타냅니다.
C++ 표준 라이브러리는 다른 언어의 함수와의 충돌을 방지하기 위해 std(standard)라는 네임스페이스에 저장됩니다.
using namespace std;
C++ 표준 라이브러리를 포함하기만 하면 됩니다.
네임스페이스는 도메인이므로 함수 변수 및 기타 내용을 외부에서 사용하려면 구조와 같은 연산자를 사용하여 이 작업을 수행해야 합니다.
네임스페이스의 호출 연산자는 두 개의 콜론입니다.
#include <stdio.h> namespace hdmo { int a = 1; } int a = 2; int main() { printf("%dn", a); printf("%dn", ::a); printf("%dn", hdmo::a); return 0; }
출력 결과에서 알 수 있듯이:: 앞부분이 비어 있으면 전역 범위의 변수가 기본적으로 호출됩니다.
네임스페이스에서 변수, 함수 등을 사용하는 방법에는 세 가지가 있습니다.
1.단일 방문: ::를 사용하면 네임스페이스의 변수나 함수에 개별적으로 액세스할 수 있습니다. 이는 가장 안전한 사용 방법입니다.
2.단일 확장 : 변수나 함수를 단독으로 확장하려면 using을 사용하세요. 확장 후에는 해당 범위가 전역 범위가 되며 더 이상 네임스페이스에 의해 제한되지 않습니다. 충돌 없이 일반적인 조건에서 이 방법을 사용하는 것이 좋습니다.
3.완전히 확장됨: 지정된 네임스페이스를 모두 직접 확장합니다. 프로젝트에서는 충돌 위험이 높습니다. 소규모 프로그램에서는 사용할 수 있습니다. (C++ 표준 라이브러리의 표준 라이브러리는 완전히 확장되므로 cin 및 cout, std:: 접두사를 붙일 필요가 없습니다.
C 언어에서 입력 및 출력 문은 각각 scanf 및 printf입니다. C++는 C 언어의 입력 및 출력 문과도 호환되지만 자체 입력 및 출력 기능인 cin 및 cout도 있습니다.
cin 및 cout 함수를 사용하려면 다음을 포함해야 합니다.<iostream>표준 입력 및 출력 스트림 라이브러리이며 C++ 표준 함수 라이브러리를 포함해야 합니다.
- #include <iostream>
- using namespace std;
cin을 사용하는 경우 '>>'를 사용하여 입력합니다.
cout을 사용하는 경우 '<<'를 사용하여 출력합니다.
<<는 스트림 삽입 연산자이고 >>는 스트림 추출 연산자입니다(<< 및 >>는 C 언어에서 왼쪽 시프트 및 오른쪽 시프트 연산자를 나타냄).
- #include <iostream>
- using namespace std;
- int main()
- {
- int a = 0;
- cin >> a;
- cout << a << endl;
- printf("%dn", a);
- return 0;
- }
먼저 endl을 줄 바꿈 'n'으로 간단히 이해하면 됩니다. 기본 부분은 너무 많이 설명하지 않고 향후 연구에서 추가할 것입니다.
위의 코드를 보면 cin과 cout은 변수의 입출력 형식을 제어하기 위해 scanf나 printf처럼 %d, %c 등을 사용하지 않는다는 것을 알 수 있습니다.cin과 cout은 변수와 데이터의 유형을 자동으로 식별할 수 있습니다., 비교적 편리한 곳입니다.
VS2022 환경에서 위 코드에는 다음이 포함되지 않습니다.<stdio.h> , VS에서는 scanf 및 prinf 기능을 사용할 수도 있습니다.<iostream>간접적으로 포함됨<stdio.h>이므로 직접 사용할 수 있지만 다른 컴파일 환경에 포함해야 할 수도 있습니다.<stdio.h> .
제어 정확도와 같은 작업을 수행하려면 C 언어의 입력 및 출력 방법을 직접 사용하는 것이 좋습니다. 이 작업을 C++로 구현하는 것이 더 번거롭습니다.
scanf와 printf는 cin과 cout보다 빠르다는 점에 유의해야 합니다. 다음 코드는 cin과 cout의 효율성을 향상시킬 수 있지만 경쟁에서 scanf와 printf를 직접 사용할 수 있습니다. 설명은 아직.
- #include <iostream>
- using namespace std;
- int main()
- {
- // 在io需求⽐较⾼的地⽅,如部分⼤量输⼊的竞赛题中,加上以下3⾏代码
- // 可以提⾼C++IO效率
- ios_base::sync_with_stdio(false);
- cin.tie(nullptr);
- cout.tie(nullptr);
- return 0;
- }
기본 매개변수는 함수를 선언하거나 정의할 때 함수 매개변수에 기본값을 부여하는 것입니다. 함수를 호출할 때 기본 매개변수가 값을 전달하지 않으면 정의된 기본값이 사용됩니다. 값이 사용됩니다.
기본 매개변수는 완전기본값(full default)과 준기본값(semi-default)으로 구분되는데, 완전기본값은 모든 형식적 매개변수에 기본값이 부여되는 것을 의미하고, 준기본값은 일부 형식적 매개변수에 기본값이 부여되는 것을 의미한다. 그리고 C++에서는 준기본 매개변수는 오른쪽에서 왼쪽으로 연속적으로 기본값을 설정해야 하며, 간격을 두고 기본값으로 점프할 수 없다고 규정하고 있습니다.
- #include <iostream>
- using namespace std;
- namespace hdmo
- {
- //全缺省
- int Fun1(int x = 0, int y = 0)
- {
- return x + y;
- }
- //半缺省
- int Fun2(int x, int y = 0)
- {
- return x + y;
- }
- }
-
- int main()
- {
- cout << hdmo::Fun1() << endl;//全缺省可以不传参
- cout << hdmo::Fun1(1) << endl;
- cout << hdmo::Fun1(1,1) << endl;
- /*
- cout << hdmo::Fun2() << endl;//半缺省不能不传参
- */
- cout << hdmo::Fun2(2) << endl;
- cout << hdmo::Fun2(2,2) << endl;
- return 0;
- }
위 코드의 결과는 다음과 같습니다.
준기본값은 왼쪽에 일반 매개변수, 오른쪽에 기본 매개변수를 포함하여 오른쪽에서 왼쪽으로 기본 매개변수의 정의와 연속성을 보장해야 합니다.
함수 오버로딩(Function Overloading)이란 동일한 함수 이름을 가진 여러 개의 함수가 동시에 존재한다는 의미입니다.
이들 사이의 차이는 매개변수 유형과 개수에 따라 결정되며 반환 값 유형과는 아무런 관련이 없습니다.반환 값 유형만 다른 동일한 이름을 가진 두 함수는 오버로드될 수 없습니다.。
- #include <iostream>
- using namespace std;
- namespace hdmo
- {
-
- int Add(int x, int y)
- {
- return x + y;
- }
- double Add(double x, int y)
- {
- return x + y;
- }
- double Add(int x, double y)
- {
- return x + y;
- }
- double Add(double x, double y)
- {
- return x + y;
- }
- }
- int main()
- {
- using hdmo::Add;
- cout << Add(1, 1) << endl;
- cout << Add(1.1, 1) << endl;
- cout << Add(1, 1.1) << endl;
- cout << Add(1.1, 1.1) << endl;
- return 0;
- }
결과는 다음과 같습니다.
위의 코드를 보면 오버로딩을 사용하면 함수를 좀 더 편리하게 사용할 수 있다는 것을 알 수 있습니다. C 언어에서는 위의 효과를 얻으려면 4개의 서로 다른 함수 이름을 사용하여 4개의 함수를 정의하고, 사용할 때 서로 다르게 사용해야 합니다. C++에서 오버로딩을 사용하면 하나의 이름을 구별할 필요가 없으므로 모든 덧셈 함수를 통일할 수 있습니다. 사용할 때 직접 사용하면 매우 편리합니다.
C++를 시작하기 위한 기본 사항에 대한 이 기사는 나중에 계속해서 다른 기본 지식에 대해 설명할 것입니다. 계속해서 오셔서 조언을 해주시기 바랍니다.
부족한 점은 개인메세지나 댓글로 지적해주세요!
홈페이지:해적 고양이 Ou-CSDN 블로그
여기 작은 갈매기가 있습니다! 다음에 또 만나요~(*́︶̅*)~