입출력 형식
- C++에서는 데이터의 입력, 출력 모두 별도의 포맷 지정이 필요 없다.
std::cin>>
을 이용하여 입력을 받는다.
std::cout<<
을 이용하여 출력한다.
std::endl
을 이용하여 개행한다.
함수 오버 로딩
매개변수 Default 값
- 함수의 매개변수에
Default 값
을 설정할 수 있다.
int Adder(int num1 = 1, int num2 = 2)
{
return num1+num2;
}
Adder();
Adder(5);
부분적 디폴트 값 설정
- 부분적으로
Default값
을 설정할 땐 오른쪽 매개변수부터 채우는 형태로 정의해야 한다.
- 함수에 전달되는 인자는 왼쪽에서부터 오른쪽으로 채워진다.
매크로 함수와 인라인 함수
1. 매크로 함수
- 일반적인 함수에 비해서 실행속도의 이점이 있다.
- 자료형에 의존적이지 않은 함수이다.
- 정의하기가 어렵다.
- 매크로를 이용한 함수의 인라인화는 전처리기에 의해서 처리된다.
#define SQUARE(x) ((x)*(x))
SQUARE(1*2*3);
2. 인라인함수
- 컴파일러가 함수를 복제하여
main문
안에 넣어준다.
- 함수를 호출하지 않고 함수의 코드를 그대로 실행한다.
- 함수 호출 과정이 없으므로 속도가 좀 더 빠르다.
- 많이 사용하면 실행파일의 크기가 커질 수 있다.
- 키워드
inline
을 이용한 함수의 인라인화는 컴파일러에 의해서 처리가 된다.
- 템플릿을 활용하여 자료형에 의존적이지 않은 인라인 함수를 작성할 수 있다.
template<class T>
inline T SQUARE(T t)
{
return t*t;
}
SQUARE(4)
SQUARE(2.1)
namespace
namespace func1
{
void func()
{
std::cout << "func1::func()" << std::endl;
}
}
namespace func2
{
void func()
{
std::cout << "func2::func()" << std::endl;
}
}
func1::func();
func2::func2();
namespace
의 호출을 통해 함수의 중복을 방지할 수 있다.
namespace
는 중첩이 가능하다.
using
을 사용하여 namespace
를 명시한다. using namespace std
using namespace 000
을 통해 000
에 선언된 모든 것에 대해 이름공간 지정의 생략을 명령할 수 있다.
범위지정 연산자 ::의 또 다른 기능
- 전역변수와 함수내의 지역변수의 이름이 같을때 전역변수의 값을 증가시킬때 ::를 사용할 수 있다.
int val = 100;
int func()
{
int val=20;
val+=3;
::val+=7;
}