본문 바로가기

분류 전체보기

1-5. 이름공간(namespace)에 대한 소개 namespace의 필요성 같은 이름의 충돌에 대한 대처를 위해 namespace가 필요하다. 협업을 하다 보면 서로 같은 이름의 함수를 사용해 문제가 생기는 일이 비일비재하다. 이를 위한 방안이 namespace이다. 아래는 A.com이라는 회사와 B.com이라는 회사가 협업하는 중에 각자의 함수를 모아서 넣었더니 이름 충돌이 일어나는 예이다. #include void function(void) { std::cout
1-4. 인-라인(in-line) 함수 함수가 inline화 되었다. 함수 호출 문장이 함수의 몸체 부분으로 완전히 대치돼 버리는 현상을 가리켜 "함수가 inline화 되었다."라고 표현한다. 함수 호출은 스택 메모리 공간의 할당도 요구하며 시간도 많이 요구된다. 함수를 inline화 할 경우, 함수 호출을 안 해도 되기 때문에 스택 메모리 공간을 절약하고 시간도 벌 수 있다. C의 경우, 매크로 함수가 인라인 함수이다. 이는 전처리기에서 처리된다. C++에서는 좀 더 세련된 방법으로 함수를 inline화 할 수 있다. 이는 컴파일러에 의해서 처리된다. #include inline int SQUARE(int x) { return x * x; } int main(void) { std::cout
1-3. 디폴트(Default) 매개 변수 디폴트 매개 변수란? C++에서는 매개 변수를 선언할 때 기본 값을 설정할 수 있다. 이것을 디폴트 매개변수라고 한다. #include int function(int a = 0) { return a + 1; } int main(void) { std::cout
1-2. 함수 오버 로딩(Function Overloading) 함수 오버 로딩이란? 함수의 이름이 같고 매개 변수의 타입 및 개수가 다른 둘 이상의 함수를 선언하는 것. C 컴파일러는 호출하고자 하는 함수를 찾을 때 오로지 함수의 이름 정보만을 가지고 찾기 때문에 동일한 이름의 함수 정의는 허용하지 않는다. C++ 컴파일러는 호출하고자 하는 함수를 찾을 때 함수의 이름과 매개변수의 정보까지도 참조를 하기 때문에 이름이 동일하더라도 매개변수의 타입 및 개수가 다르면 선언하는 데 문제가 되지 않는다. 그리고 리턴타입만 달라서는 오버 로딩되지 않는다. #include void function(void) { std::cout
1-1. printf와 scanf를 대신하는 입/출력 방식 "Hello world"의 출력 #include int main(void) { std::cout