********************************************************************************
입문자는 반드시 본 포스팅을 여러번 반복해서 공부해야됩니다.
목차에 한줄 요약 카테고리가 있으니 빠르고, 쉽게 이해할 수 있습니다.
********************************************************************************
C++의 배경
C++는 대규모 응용 프로그램을 개발하는 데 널리 사용되는 범용 고급 프로그래밍 언어입니다. C 프로그래밍 언어의 확장이며 1983년 Bjarne Stroustrup에 의해 개발되었습니다. C++는 객체 지향 프로그래밍 언어로 캡슐화, 상속 및 다형성을 지원합니다. 또한 절차적 프로그래밍과 저수준 메모리 조작을 지원합니다.
아래의 코드를 보시면 <iostream>, myheader.h, my_namespace 등 생소한 단어와 구조를 볼 수 있습니다.
#include <iostream>
#include "myheader.h"
int main() {
std::cout << my_namespace::x << std::endl;
my_namespace::print();
return 0;
}
이러한 단어와 구조는 어떠한 의미와 역할을 하는지 전체적인 구조적 이해와 접근이 앞으로의 코딩을 배우는데 중요하며, 아래에 자세히 설명하겠습니다.
C++ 에서 많이 볼 수 있는 <iostream> - '헤더파일' 이다.
<iostream>은 C++ 표준 라이브러리 헤더 파일입니다. 입력/출력 스트림을 나타내며 C++ 프로그램에서 입력 및 출력 작업을 수행할 수 있는 일련의 함수 및 개체를 제공합니다. <iostream>에서 가장 일반적으로 사용되는 클래스는 std::cin 및 std::cout입니다.
std::cout은 표준 출력 스트림(일반적으로 콘솔)을 나타내는 std::iostream 클래스의 인스턴스입니다. std::cout을 사용하여 << 연산자를 사용하여 콘솔에 텍스트를 출력할 수 있습니다.
std::cin은 표준 입력 스트림(일반적으로 키보드)을 나타내는 std::iostream 클래스의 인스턴스입니다. >> 연산자를 사용하여 std::cin을 사용하여 사용자의 입력을 읽을 수 있습니다.
예를 들어 다음 코드는 콘솔에 "숫자를 입력하세요:"라는 메시지를 출력한 다음 사용자가 변수 x에 저장될 숫자를 입력할 때까지 기다립니다.
#include <iostream>
int main() {
int x;
std::cout << "Enter a number:";
std::cin >> x;
std::cout << "You entered: " << x << std::endl;
return 0;
}
<iostream>은 각각 오류 및 로깅에 사용되는 std::cerr 및 std::clog와 같은 다른 유용한 개체 및 기능도 제공합니다.<iostream>은 C++에서 널리 사용되는 헤더 파일로, C++ 표준 라이브러리의 일부이므로 모든 C++ 컴파일러에서 널리 지원됩니다.
참고로 C++에서는 프로그래머가 정의하는 헤더파일의 선언이 아닌, 표준 헤더파일의 선언에서는 확장자를 생략하기로 약속되어 있다.
C++ 에서 많이 볼 수 있는 헤더 파일 (header file)
C++에서 헤더 파일은 함수, 클래스 및 변수에 대한 선언을 포함하는 파일 확장명이 ".h" 또는 ".hpp"인 파일입니다. 헤더 파일의 목적은 여러 소스 파일에서 코드를 재사용할 수 있도록 하는 것입니다.
헤더 파일에는 일반적으로 함수, 클래스 및 변수에 대한 선언이 포함되지만 해당 정의는 포함되지 않습니다. 이러한 엔터티에 대한 정의는 일반적으로 파일 확장명이 ".cpp"인 별도의 소스 파일에 배치됩니다. 이를 통해 코드를 복제하지 않고 동일한 헤더 파일을 여러 소스 파일에 포함할 수 있습니다.
코드에서 헤더 파일을 사용하려면 "#include" 전처리기 지시문 뒤에 파일 이름을 따옴표나 꺾쇠 괄호로 묶어 헤더 파일을 포함합니다. 예를 들어:
#include "myheader.h"
따옴표를 사용하여 헤더 파일을 포함하면 컴파일러는 소스 파일과 동일한 디렉토리에서 파일을 찾습니다. 꺾쇠 괄호를 사용하여 헤더 파일을 포함하는 경우 컴파일러는 표준 포함 디렉터리에서 파일을 찾습니다.
오류를 유발하고 컴파일 시간을 늘릴 수 있는 동일한 파일의 다중 포함을 방지하기 위해 헤더 파일에 포함 가드를 사용하는 것도 좋은 방법입니다.
#ifndef MYHEADER_H
#define MYHEADER_H
// header file contents
#endif
이런 식으로 컴파일러는 MYHEADER_H가 정의되어 있는지 여부를 확인하고, 정의되어 있지 않으면 정의하고 코드를 진행하고, 그렇지 않으면 코드 블록을 건너뜁니다.
참고로 C++에서는 프로그래머가 정의하는 헤더파일의 선언이 아닌, 표준 헤더파일의 선언에서는 확장자를 생략하기로 약속되어 있다.
헤더파일 한줄 요약
std, cout, cin, endl. endl 문장을 사용하려면 아래의 #include <iostream> 헤더파일 선언을 추가해야된다.
#include <iostream>
C++ 에서 많이 볼 수 있는 cpp 파일
.cpp 파일이라고도 하는 C++ 소스 파일은 C++ 프로그램 구현이 포함된 텍스트 파일입니다. 해당 헤더 파일에서 선언된 함수, 클래스 및 변수의 정의를 포함합니다.
C++ 소스 파일의 파일 확장자는 일반적으로 .cpp이지만 일부 컴파일러는 .c 및 .cc 파일 확장자도 지원합니다.
C++ 소스 파일은 일반적으로 전처리기 지시문으로 시작하여 필요한 헤더 파일을 포함합니다. 그런 다음 헤더 파일에 선언된 함수, 클래스, 변수의 정의를 포함합니다. C++ 프로그램의 진입점은 프로그램이 실행을 시작하는 곳인 main() 함수입니다.
다음은 간단한 C++ 소스 파일의 예입니다.
#include <iostream>
#include "myheader.h"
int main() {
std::cout << "Hello, World!" << std::endl;
my_namespace::print();
return 0;
}
이 예제에서는 <iostream> 헤더 파일과 #include 전처리기 지시문을 사용하여 my_namespace::print() 함수를 포함하는 "myheader.h"를 포함했습니다. 그리고 프로그램의 진입점인 main() 함수는 "Hello, World!"라는 메시지를 출력하고 있습니다. std::cout 을 사용하고 my_namespace::print() 함수를 호출합니다. cpp 파일에 코드를 작성했으면 시스템에서 실행할 수 있는 실행 파일(Windows용 .exe 및 기타 OS용 바이너리)을 얻기 위해 컴파일해야 합니다.
cpp 파일 한줄 요약
프로그램 구현부이다. cpp 파일을 컴파일해, 각각의 이름으로 된 obj을 생성하고 링크해서 main.exe라는 실행 파일을 생성하게 된다. C++ 컴파일러에서는 특히 cpp파일만 컴파일하고 헤더 파일만 따로 컴파일하지는 않는다.
C++에서 많이 볼 수 있는 네임스페이스 (namespace)
C++의 네임스페이스는 변수 이름, 함수 이름 및 클래스 이름과 같은 식별자의 컨테이너입니다. 네임스페이스는 관련 코드를 함께 구성 및 그룹화하고 프로그램의 다른 부분 간의 이름 충돌을 방지하는 데 사용됩니다. 네임스페이스는 "namespace" 키워드를 사용하여 정의할 수 있으며, 네임스페이스 내의 식별자는 범위 확인 연산자(::)를 사용하여 액세스할 수 있습니다.
예를 들어 "my_namespace"라는 네임스페이스에 "print"라는 함수가 있는 경우 "my_namespace::print()"를 사용하여 액세스합니다. C++의 네임스페이스는 변수 이름, 함수 이름 및 클래스 이름과 같은 식별자의 컨테이너입니다. 네임스페이스는 관련 코드를 함께 구성 및 그룹화하고 프로그램의 다른 부분 간의 이름 충돌을 방지하는 데 사용됩니다.
namespace 다양한 사용 예시
네임스페이스는 "namespace" 키워드 뒤에 네임스페이스 이름과 중괄호 {} 세트를 사용하여 정의됩니다. 예를 들어:
using namespace std;
namespace my_namespace {
int x = 5;
void print() {
cout << "Hello from my_namespace" << endl;
}
}
범위 확인 연산자(::)를 사용하여 네임스페이스 내의 식별자에 액세스할 수 있습니다. 예를 들어 "my_namespace" 네임스페이스에서 "x" 변수와 "print" 함수에 액세스하려면 다음 코드를 사용합니다.
using namespace std;
int main() {
cout << my_namespace::x << endl;
my_namespace::print();
return 0;
}
이름을 지정하지 않고 네임스페이스 내에서 변수나 함수를 정의할 수도 있습니다.
namespace {
int x = 5;
void print() {
cout << "Hello from anonymous namespace" << endl;
}
}
범위 확인 연산자를 사용하지 않으려면 using 키워드를 사용할 수도 있습니다.
using namespace my_namespace;
using namespace std;
int main() {
cout << x << endl;
print();
return 0;
}
이러한 네임스페이스를 사용하여 이름 충돌을 피하고 코드를 체계적으로 유지하는 것이 좋습니다.
네임스페이스 한줄 요약
- 네임스페이스 std에 선언된 cout,
- 네임스페이스 std에 선언된 cin,
- 네임스페이스 std에 선언된 endl
구조를 생각할 수 있다. 아래의 기본틀 코드를 보면 이해하기 쉽다.
namespace std {
cout ...
cin ...
endl ...
}
'C++ > 입문편' 카테고리의 다른 글
5강. Switch/Case문 기본 개념 설명 및 코드 예시를 살펴보자 (0) | 2023.01.22 |
---|---|
4강. IF-ELSE 조건문 기초 설명 및 사용 예시를 살펴보자 (0) | 2023.01.22 |
3강. For 반복문의 기초 설명 및 예시를 살펴보자(2중 For문, 평균, 왜도, 첨도, 구구단) (0) | 2023.01.22 |
2강. Microsoft Visual C++ 의 데이터 형식(Data Type)에 대해 알아보자 (int, floor, string, char, long) (0) | 2023.01.22 |
[보충 설명] 1-1강. "헷갈리기" 쉬운 네임스페이스(namespace), 헤더, cpp, 클래스, 메서드 지식 뿌시기 (0) | 2023.01.21 |
댓글