2011. 5. 19. 22:48ㆍC++
1. iostream
표준 입력과 출력에 관련된 api가 존재한다.
<iostream.h> : 이전 표준
<iostream> :신규 표준(이전과 구분하기 위하여 .h를 빼고 있다.
2. cout and cin
cout<<"문자열 출력";
cin>>입력변수1>>입력변수2>>입력변수3; // 키보드 입력
3. 오버로딩
C : 함수 이름만 가지고 검색하기 때문에 지원을 안한다.
C++ : 이름 뿐만 아니라 매개변수도 확인하기 때문에 지원한다.
4. 디폴트 매개변수
매개변수의 값에 설정한 기본값을 설정한다.
헤더파일이나 CPP 함수중 딱 한곳에만 지정한다.
예> 헤더파일에: int Volume(int x, int y=3, int z=5) 를 해야 한다. (반드시 헤더파일 임)
int Volume(int x, int y, int z) {
return x*y*z;
}
호출 : Volume(3);
Volume(3,4);
Volume(3,4,5);
* 참고: 만약 Volume(int x,int y)같은 경우도 선언가능하지만 혼돈이 생길수 있으니 매개변수나 오버로딩중 하나
를 선택하도록 한다.
5. 인-라인 함수
프로그램 소스코드 안으로 함수의 정의가 들어간다는 것입니다.
(매크로 함수)
해당 매크로의 소스코드가 호출 부분과 치환되어 컴파일 된다.
장점: 실행속도의 향상이 있으나, 구현이 어렵다. 함수콜 자체가 축소가 되니 빠르겠죠.
- C 스타일
이런 형태는 해당 매크로함수에 문제가 있어도 발견되지가 않는다.(왜? 컴파일 되지 않기때문)
#define SQUARE(x) ((x)*(x))
사용 => std::cout<<SQUARE(5)<<std::endl;
- C++ 스타일
컴파일러에 의해 최적화 되어 처리된다. 매크로 함수의 장점을 그대로 반영하면서 구현도 용이하다.
inline int SQUARE(int x){
return x*x;
}
사용=> std::cout<<SQUARE(5)<<std::endl;
6. 이름공간(namespace)
서로다른 작업공간내에 같은 이름들이 존재할경우 이에대한 충돌을 방지하기 위해 생성되었다.
비주얼 스튜디오의 .h 와 cpp 구조하(클래스 명이 정해진 상태에서의) 에서는 아래와 같이 하나의 cpp안에 네임스페이스를 정의 할 수 없다.
namespace A_COM{
void function(void) {
std::cout<<"A 회사의 함수"<<std::endl;
}
}
namespace B_COM{
void function(void) {
std::cout<<"B 회사의 함수"<<std::endl;
}
}
이렇게 공간을 나눌경우 충돌이 되지 않습니다.
(범위지정 연산자를 이용해 호출한다.)
호출 => A_COM::function();
B_COM::function();
예> std , 이게 곧 namespace 입니다.
- using 선언
using A_COM::function; => 이 함수를 function으로 그냥 사용하겠다는 의미다.
using namespace A_COM; => A_COM에 존재하는 모든것을 그냥 사용한다.