#include <iostream>
using namespace std;
int main() {
cout << "Hello World";
return 0;
}
보통 위같은 형태를 써놓고 main() 함수 안에 알고리즘을 적어나가기 시작한다.
여기서 맨날 사용하지만 뜻은 잘 모르는 맨 위의 두 줄을 정리해보았다.
1. #include <iostream>
C에서 자주 쓰는 stdio.h와 C++의 iostream이 헷갈려 표로 정리했다. (출처)
stdio.h | iostream | |
정의 | C 표준 라이브러리의 헤더 파일 | C++의 표준 라이브러리의 헤더 파일 |
상세 | C 표준 입출력 함수가 정의되어 있음 ( printf, scanf 등) | C 표준 입출력 클래스가 정의되어 있음 (istream 등) |
즉, cin, cout 등은 함수가 아니라 C++의 입출력 스트림을 다루는 객체이다.
2. using namespace std;
C++의 표준 namespace를 코드에서 생략하겠다( = std::를 생략하겠다).
2.1. namespace & std
- namespace(네임스페이스): 이름 충돌을 방지하기 위해 사용함
- 예시: std::cout, std::cin ...
- C++ 표준 라이브러리는 모든 기능을 std 네임스페이스 안에 정의함
- 사용자 정의 네임스페이스를 만들 수도 있음 (예시: test:testFunction())
네임스페이스 안에 변수나 다른 클래스, 함수 등을 넣길래 클래스와 개념이 헷갈렸는데, 클래스와는 엄연히 다른 개념이었다.
namespace | class | |
정체 | 이름 충돌 방지를 위한 그룹화 개념 | 객체 지향 프로그래밍에서 데이터와 메서드를 묶는 개념 |
객체 생성 가능 여부 | 불가능 (인스턴스화 X) | 가능 (new, static 등 사용) |
멤버 보호 수준 | 없음 (public/private 등 접근 제어자 X) | 있음 (public, private, protected) |
상속 가능 여부 | 불가능 | 가능 (상속, 다형성 등) |
사용 방식 | namespace myNamespace {int a;} | class MyClass {int a;} |
2.2. using
매번 std::cout std::cin 이런 식으로 쓰기 귀찮으니까 using std::cout; 이런식으로 main() 함수 안에 써두면 cout만 쓸 수 있다.
만약 전역적으로 쓰고 싶으면 main() 함수 밖에 using namespace std; 이런 식으로 쓰면 된다.
단, 너무 남발하면 namespace를 사용하기 전과 차이가 없을 수 있으니 주의해야 한다.
'Programming Language > C++' 카테고리의 다른 글
[C++ 기초 문법 정리] 4. Array(배열) vs Vector(벡터) (0) | 2025.02.11 |
---|---|
[C++ 기초 문법 정리] 3. for문, for-each 반복문 (0) | 2025.02.11 |
[C++ 기초 문법 정리] 2. cin, getline (0) | 2025.02.11 |