C++ 기초 정리(1)
1. 명시적 스타일
int main() 함수를 보면 main함수 옆에 arugument 혹은 parameter가 비어있다.
컴파일러는 int main(void) 로 인식한다.
여기서 명시적 스타일이라는 것은 int main()으로 사용하여도 컴파일러는 parameter가 void형이라는 것을 알 수 있다
하지만 사용자가 작성 하지 않아도 되는 것을 작성하여 표현하는 것을 명시적 스타일이라고 한다.
* main 함수의 반환 값을 void main()으로 작성하는 것은 피하자
2. 전처리기
전처리의 말뜻부터 이해하자
전처리라는 말은 무언가 작업을 하기 전 미리 처리를 해놓는다는 것을 의미한다.
C++에서 전처리기란 컴파일 하기전 소스파일에 대해 미리 처리를 수행하는 것을 말한다.
#include<iostream>
위와 같이 #으로 시작하는것들을 전처리기라 한다.
#은 전처리 지시자(directive)라고 하고 #include<iostream> 이라는것은 iostream 파일의 내용을 프로그램에
추가하라고 지시하는 것이다.
3. namespace
C++에서는 namespace 라는 것을 제공한다.
#include<iostream>
using namespace std;
이렇게 using namespace std라고 지정하는데 이 의미가 무엇이냐면 iostream 파일안에 함수들을 사용하기
위해서는 std라는 이름 공간이 필요하다.
그 이름 공간을 일일이 작성하지 않고 사용하도록 만들어준다는 의미이다
예를들어 using namespace std가 없는 경우에는
기본 출력 함수인 cout을 사용할때 마다 std::cout << "ohtuna"; 라고 적어주어야 한다.
하지만 using namespace std를 사용하면 cout << "ohtuna"; 를 사용해도 정상동작 한다.
그럼 왜 이런 기능을 만들었는지 알아보자
A 업체에서 만든 함수가 있고, B업체에서 만든 함수가 있다
그런데 두 업체에서 만든 함수이름이 동일하다면 컴파일러는 어떤 업체에 함수를 써야할지 모른다
그리하여 만들어진 것이 namespace 이다
A업체의 namespace를 A라고 만들고 B업체의 namespace를 B라고 하고
동일한 두 함수명은 Ohtuna()라고 하자 그리고 두 함수는 다른 기능을 한다
A업체 Ohtuna함수
int Ohtuna()
{
return 1;
}
B업체 Ohtuna함수
int Ohtuna
{
return 100;
}
cout << A::Ohtuna() <<"\n";
cout << B::Ohtuna() << "\n";
출력 결과
1
100
이렇게 구별하여 사용 할 수 있기 때문에 namespace 라는 기능이 생겼다.