

1979년 Bell 연구소의 Bjarne Stroustrup이 C 언어를 확장하여 만든 프로그래밍 언어
.cpp, .css, .C 등을 사용한다.#include라는 선행처리기 지시어에 의해 소스 프로그램 파일에 삽입되어 함께 컴파일된다..h, .hpp 등을 사용한다.소스파일 -> 컴파일 -> 목적 파일 + 라이브러리 -> 링크 -> 실행 프로그램 파일(.exe)
//FirstStep.cpp
#include <iostream>
int main() {
// 표준 출력 스트림으로 문장을 출력함
std::cout << "첫 C++ 프로그램"
<< std::end1;
return 0;
}
/*와 */ 사이에 문장을 작성한다./* 주석 작성 방법1*/
// 이후의 문장은 주석이다.// 주석 작성 방법2
1) C++ 프로그램을 컴파일하기 전에 소스 프로그램을 가공하여 컴파일러가 실제로 번역할 소스 프로그램을 만드는 것
2) 선행처리기 지시어(preprocessor directives)로 처리를 지시한다.
- 선행처리기 지시어는 #으로 시작한다.
- 선행처리기 지시어 문장은 한 행에 한 개의 문장을 작성한다.
3) 대표적인 선행처리
- 헤더파일 삽입: #include
- 매크로 선언 및 해제: #define, #undef
- 조건부 컴파일: #if, #ifdef(만약 정의가 되어있으면), #ifndef(만약 정의가 되어있지 않으면)
#include <iostream> // 선행처리기 지시어
int main() {
}
// a.cpp
#include "a.h"
문장_1;
문장_2;
문장_3;
// a.h
문장_h1;
문장_h2;
문장_h3;
// 선행처리 결과
문장_h1;
문장_h2;
문장_h3;
문장_1;
문장_2;
문장_3;
//FirstStep.cpp
#include <iostream>
int main() {
// 표준 출력 스트림으로 문장을 출력함
std::cout << "첫 C++ 프로그램"
<< std::end1;
return 0;
}
<>와 "" 차이<>: 표준 라이브러리에서 가져올 때 사용"": 파일의 위치를 직접 지정할 때 사용std::cin >> a;
aSquare = a * a;
{} 안에 나열하여 묶어 놓은 것if (a > b) {
auto tmp = a;
a = b;
b = tmp;
}
//FirstStep.cpp
#include <iostream>
int main() { // 함수의 머리부
// 표준 출력 스트림으로 문장을 출력함
std::cout << "첫 C++ 프로그램"
<< std::endl;
return 0;
}
<<std::cout << "첫 C++ 프로그램";
int a = 10;
std::cout << "a의 값은 ";
std::cout << a << "입니다." << std::endl;
>>int a;
char str[100];
std::cin >> a >> str;
namespace myNSpce {
int count; // 명칭을 선언하는 문장 나열
}myNSpc::count = 0;#include <iostream>
namespace NameSpace1 {
int a = 10;
}
namespace NameSpace2 {
int a = 20;
}
int a = 30; // 전역 명칭공간
namespace NameSpace1 {
int b = 50;
}
int main() {
int a = 40; // 지역변수
std::cout << NameSpace1::a << std::endl; // 10
std::cout << NameSpace2::a << std::endl; // 20
std::cout << ::a << std::endl; // 30
std::cout << a << std::endl; // 40
std::cout << NameSpace1::b << std::endl; // 50
return 0;
}
using을 이용한 명칭공간 사용using namespace std;#include <iostream>
using namespace std;
namespace NameSpace1 {
int a = 10;
}
namespace NameSpace2 {
int a = 20;
}
int a = 30; // 전역 명칭공간
namespace NameSpace1 {
int b = 50;
}
int main() {
int a = 40; // 지역변수
cout << NameSpace1::a << endl; // 10
cout << NameSpace2::a << endl; // 20
cout << ::a << endl; // 30
cout << a << endl; // 40
cout << NameSpace1::b << endl; // 50
return 0;
}