1. printf와 scanf를 대신하는 입출력 방식
  1) 구버전/신버전의 헤더 파일
    - #include <iostream.h> : 구버전의 헤더 파일
    - #include <iostream> : 신버전의 헤더 파일, std::cout, std::cin, std::endl 처럼 써야 한다
  2) 출력
    - count<<”문자열”<<endl;
    - std::cout<<”문자열”<<std::cout::endl;
    - count<<정수<<’문자’<<”문자열”<<endl; 도 가능, 자료형에 상관없이 출력이 가능하므로 편리함
  3) 입력
    - cin>>입력받을변수>>입력받을변수…;
  4) 기타
    - C에서와는 다르게 함수의 시작 부분에서 뿐만 아니라 어디서든 변수 선언이 가능 (for문 안에서 선언과 초기화 동시도 가능)

2. 함수 오버로딩 (Function Overloading)
  1) 함수 오버로딩이란 : 동일한 이름을 가지면서 매개변수의 개수 혹은 타입을 다르게 가지는 함수를 중복해서 정의하는 것
  2) C : 컴파일러에서 함수의 이름만으로 참조, 호출하므로 오버로딩이 불가능
  3) C++ : 함수이름과 매개변수의 타입까지 참조하므로 함수 오버로딩이 가능하다
  4) 매개변수의 개수가 다르거나 타입이 다른 경우만 허용하며, 리턴값의 타입이 다른 경우는 오버로딩이 허용되지 않는다

3. 디폴트 (Default) 매개 변수
  1) 디폴드 매개 변수란 : 함수 선언시 전달되지 않은 인자에 자동으로 입력되도록 디폴트 값이 정의되어 있는 매개 변수
  2) example

    위와 같은 함수에서 function()으로 매개 변수가 생략되어 호출되는 경우에 a는 자동으로 디폴트 값 0을 가지게 됨
  3) 기타
    - 함수 오버로딩과 디폴트 매개 변수가 중복되는 경우 컴파일 에러 발생하므로 주의 필요

4. 인-라인 (in-line) 함수
  1) C : C에서는 #define을 이용한 매크로로 전처리기에 의해 인-라인화
  2) C++ : 함수의 선언시에 inline 선언을 하면 함수가 자동으로 인라인화 되고, 컴파일 타임에 컴파일러는 inline 할지를 판단하여 처리한다
  3) 장점
    - 사용법이 간단하고 구현이 용이함
    - 매크로 함수의 장점을 반영하면서, 컴파일러에 의한 최적화가 가능

5. 이름 공간 (namespace) 에 대한 소개
  1) namespace : 큰 프로젝트 등에서 동일한 함수 이름의 사용으로 인한 오류를 막기 위해 공간에 이름을 부여하는 것
  2) 기타
    - :: 범위지정연산자
    - ::val 과 같이 사용하여 전역 변수에 접근이 가능
    - using 을 이용하여 namespace를 생략하고 사용이 가능하나 namespace의 기본 필요성을 고려해서 사용이 필요

by sminchoi 2008. 8. 20. 20:15