Programming Language/C++

[C++ 기초 문법 정리] 1. 기본 형태

노호호 2025. 2. 10. 13:04
#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를 사용하기 전과 차이가 없을 수 있으니 주의해야 한다.