C언어의 배열과 포인터까지 공부한 후 C++로 넘어왔다.
아니 책을 샀는데 본서는 C언어를 공부한 독자를 대상으로 집필된 C++기본서 라고 한다...
그래서 나는 C 를 공부해야만 했고.. 물론 학원 커리큘럼도 C부터 시작하긴 했지만
내 머릿속의 지우개는 C언어를 다 지워버림 그렇다 필자는 또 ㅈ된 거다. 프로그래밍은 순탄하게 간 적이 왜 한 번도 없는가.
이 길은 어쩌면 나에게 맞지 않을 수도 있다는 슬슬 예감이 옴, 하지만 난 상여자이기 때문에 고난과 역경은 더욱 나를 강하게 만들 뿐 다시 가보자고
이런 말은 책 표지에 좀 박아둬야하는거 아닐까. 책을 구매 후 펼쳐보니 C언어 책을 교보문고 가서 부랴부랴 구매하게 됨
C와는 다르게 소스파일을 .cpp로 만들어야 한다.
1. 헤더파일과 표준 입출력
구분 | C | C++ |
헤더파일 | <stdio.h> | <iostream> |
입력문 | scanf | std::cin |
출력문 | printf | std::cout |
개행 | \n | \n std::endl |
C에서는 #include <stdio.h>를 사용했다면 C++에서는 #include <iostream> 을 헤더파일 선언 추가해야 한다.
C에서의 scanf를 대신해 std::cin과 >> 연산자를 이용해 출력을 하고 printf를 대신해 std::cout과 <<를 사용한다.
std::cout << 출력대상 ;
이 출력대상의 위치에는 무엇이든 올 수 있다. C처럼 따로 출력 형식 지정자를 지정하지 않아도 (ex. %d %s ....) 사용이 가능하다는 것이 좀 쩌는듯
<<은 무엇인가?
<<는 둘 이상의 출력대상을 연이어 출력할 때 필요한 것
std::cout << 출력대상 << 출력대상<<출력대상 ; 이런 식으로
줄 바꾸기는 C에서의 \n를 써도 되지만 std::endl 를 주로 사용하는 것 같다.
예문을 통해 익혀보자.
#include <iostream>
int main(void)
{
int num1;
int num2;
std::cout << "Hello word\n";
std::cout << "Hello" << std::endl << "world" << std::endl;
std::cout << "숫자를 입력해주세요 : ";
std::cin >> num1;
std::cout << "두번째 숫자를 입력해주세요 : ";
std::cin >> num2;
std::cout << "두수의 합";
std::cout << "num1 + num2 = " << num1+num2;
return 0;
}
이 코드를 실행시켜 보면
개행이 어떻게 되는지 숫자 입력을 받고 어떻게 내보내는지 간략하게 알 수 있다.
오키 여기까진 괜찮은 것 같은데 std::가 무슨 역할을 하는지 궁금하다.
2. 네임스페이스
네임스페이스는 소속을 지정해 주는 역할을 한다. cin, cout을 쓸 때 앞에 붙는 std:: 는 standard의 줄임말로 C++에서 사용하는 여러 가지 함수, 객체, 클래스 등이 정의된 네임스페이스이다.
네임스페이스는 범위를 부여해 여러 라이브러리를 포함할 때 충돌을 방지하기 위해 사용한다고 한다.
보통은 std::를 다 써주는 게 좋지만 배우는 과정에서 짧은 예문만 사용할 때에는 소스 앞부분 using namespace std;를 넣어주면 std::를 생략하고 쓸 수 있다.
#include <iostream>
using namespace std;
int main(void)
{
int num1;
int num2;
cout << "Hello world" << endl;
cout << "숫자를 입력해주세요 : ";
cin >> num1;
cout << "두번째 숫자를 입력해주세요 : ";
cin >> num2;
cout << "두수의 합";
cout << "num1 + num2 = " << num1+num2;
return 0;
}
이렇게 코드가 좀 더 치기 쉬워졌다.
범위를 부여한다는 게 좀 어렵게 다가온다면 아래의 코드를 쳐보자
#include <iostream>
namespace momo
{
void function(void)
{
std::cout << "momo가 정의한 함수" << std::endl;
}
}
namespace tami
{
void function(void)
{
std::cout << "tami가 정의한 함수" << std::endl;
}
}
int main(void)
{
momo::function();
tami::function();
return 0;
}
네임 스페이스 momo에 function이라는 함수를 만들었다.
그리고 네임스페이스 tami에 function 동일한 이름의 함수를 만들었다.
메인함수에서 이 둘의 함수를 불러낼 때 네임스페이스를 사용해 범위를 부여해 주면
실행결과는 각 네임스페이스에 있는 함수를 불러온다는 것이다.
그렇다면 ::은 무엇인가?
3. 범위지정 연산자
std:: 라든가 위 예제에서의 momo::, tami:: 에서 :: 이란 무엇인가? 이를 범위지정 연산자라고 부른다.
이름뜻대로 네임스페이스를 지정할 때 사용하는 연산자이다. ~의 라고 생각하면 편하다.
momo::fonction 모모 의 함수 이런 느낌
'Unreal > C++' 카테고리의 다른 글
[C++ 01.17] 배열과 오름차순, 선택 정렬 sort() 함수, (0) | 2025.01.17 |
---|---|
[C++ 01.10]계좌 개설 클래스로 알아보는 enum 열거형, switch ~ case 문, while문 (0) | 2025.01.10 |
[C++ 01.09] if문과 max()함수 (0) | 2025.01.09 |