// 예시O 필수X
#include 문
#define 문
int main()
{
명령문;
return문;
}
모든 C++ 프로그램은 main 함수를 가진다.
함수 종료를 의미하며, 함수를 호출한 곳으로 결과를 반환한다.
main 함수 반환 시 프로그램이 종료된다.
- 전처리기, 선행처리기(Preprocessor)
: 컴파일러가 코드를 컴파일하기 전에, 프로그램 전체에 영향을 미치는 코드를 처리하는 작업을 의미한다.
: 전처리기에 의해 처리되는 명령어, #로 시작한다.
: 외부에 선언된 함수나 상수 등을 사용하기 위해서 헤더 파일의 내용을 현재 파일에 포함시킨다.
-> 전처리기가 지정해둔 헤더 파일을 열고, 전처리문이 작성된 위치에 그대로 복붙한다.
#include <math.h> // C, C++ 모두 가능
#include <cmath> // C++ 스타일
- 매크로(Macro)
: 명령문이나 표현식을 나타내는 식별자를 의미한다. 보통 대문자로 쓴다.
( = 어떠한 명령에 이름 붙인 것 )
: 매크로를 정의할 때 사용된다.
아래 예시처럼 객체형 매크로 외에 함수처럼 동작하는 함수형 매크로도 만들 수 있다.
// 예시
#define SIZE 100
int main()
{
// [출력] 배열 크기 : 100
std::cout << "배열 크기 : " << SIZE;
// 크기가 100인 정수 배열 생성
int array[SIZE] = {};
}
이름이 소속된 공간
C언어엔 없는 기능
C++ 프로그램 작성 시 발생하는 이름 충돌을 방지 ( 함수 이름 겹쳐도 충돌 안 함 )
표준 라이브러리의 변수/함수들은 std 네임스페이스에 포함되어 있다.
-> 표준 라이브러리를 사용할 때, std:: 접두어를 붙임으로써
std:: 뒤의 정의가 std라는 네임스페이스에 존재한다는 것을 컴파일러에게 알려준다.
// 예시
std::cout << num << std::endl;
:: 연산자는 범위 지정 연산자 혹은 스코프 설정 연산자라고 하며C++의 모든 것은 객체로 표현되므로, 입출력을 담당하는 수단도 C언어처럼 함수가 아니라 모두 객체이다.
iostream 헤더 파일에 표준 입출력 클래스가 정의되어 있다.
cout : 출력 / cin : 입력
C언어처럼 printf, scanf 함수로도 입출력이 가능하다.
출력 담당 객체
iostream 클래스의 인스턴스라고 할 수 있다.
C언어의 %d, %f 처럼 출력할 타입을 지정하지 않아도 cout 객체가 알맞은 자료형을 선택해서 출력해준다.
<< 연산자로 문자열들을 붙여준다.
입력 담당 객체
cout와 반대로 >> 연산자 사용
<< 연산자 사용
c의 '\n' 과 비슷한 역할 but 완전히 똑같진 않다.
기능)
버퍼 비워줄 필요 없고, 단순히 줄바꿈 기능만 필요한 것이라면
\n을 입력하는 게 효율적이다.
C : printf / C++ : cout
표준 헤더 파일 iostream 내의 정의를 사용하는 예제
: std 네임스페이스에 속한 cout 객체에 TEXT로 정의한 문자열과 endl 객체를 넘기고 문자열을 출력한다.
#include <iostream>
#define TEXT "C++ Study"
int main()
{
std::cout << TEXT; << endl;
return 0;
}
-> using namespace std; 명령문을 추가한다.
#include <pch.h>
#include <iostream>
// std 네임스페이스에 속한 정의는 네임스페이스 이름 붙이지 않아도 사용 가능해짐
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
위처럼 작성하면 std 네임스페이스를 전부 사용하겠다는 의미가 된다.
그러면 네임스페이스를 사용하는 의미가 없어진다.
귀찮더라도 std::cin, std::cout 처럼 하나하나 접두어를 붙여서 사용해 주자.
(코딩문제 풀이를 할 때는 그냥 using namespace std; 그대로 쓰고 있다.
// : 한 줄 주석
/*주석 내용*/ : 여러 줄 주석
여러 줄 주석 안에 한 줄 주석 삽입 : 가능
여러 줄 주석 안에 여러 줄 주석 중첩 : 불가능
C언어 변수와 같은 개념
예시) int number; 에서 number는 int 자료형에 대한 인스턴스이다.
객체지향 프로그래밍에서는 모든 것을 객체로 표현하며, 객체의 형식을 갖는 변수를 인스턴스라고 부른다.
매우 간단명료한 비유를 발견했다. (출처)
클래스) 붕어빵 틀
객체) 틀로 찍어낸 모든 붕어빵 (그 개념 자체를 의미)
인스턴스) 맛도 구워진 정도도 각기 다른 붕어빵(들)
-> 객체를 인스턴스화한 결과
-> 팥붕어빵, 슈크림붕어빵, 아이스크림붕어빵, ...
참고)
http://www.tcpschool.com/cpp/cpp_intro_program
매크로
매크로 함수
매크로와 #include, #define
https://gdnn.tistory.com/161
https://www.epnc.co.kr/news/articleView.html?idxno=52113
클래스 객체 인스턴스