본문 바로가기
C++

C++

by Doromi 2019. 5. 4.
728x90
반응형

함수 오버로딩 ( function overloading)

디폴트 인수가 인수의 개수를 달리하여 같은 함수를 호출하는 것이라면,
함수 오버로딩은 같은 이름의 함수를 중복하여 정의하는 것을 의미한다.

객체 지향 프로그래밍의 특징 중 바로 다형성(polymorphism)의 구현이다.

1. void Display(const char* str, int n);             // 문자열 str을 n번 출력함.

2. void Display(const char* str1, const char* str2); // 문자열 str1과 str2를 연달아 출력함.

3. void Display(int x, int y);                       // x * y를 출력함.

4. void Display(double x, double y);                 // x / y를 출력함.

 

 

 

함수의 오버로딩은 매개변수의 타입뿐만 아니라 매개변수의 개수를 달리해도 작성 할 수 있다.

void Shift(int, int);

void Shift(int, int, int);

void Shift(int, int, int, int);

 

int main(void)

{

    Shift(1, 2);

    Shift(1, 2, 3);

    Shift(1, 2, 3, 4);

    return 0;

}

 

 

 

유효 범위 (scope)

하나의 변환 단위내에서 해당 변수가 사용될 수 있는 범위


함수 내에서 선언된 변수는 함수 내에서만 사용할 수 있다.
또한, 함수 밖에서 선언된 변수는 변수가 선언된 이후에 나오는 모든 함수에서 사용할 수 있다.

 

 

클래스(class)

클래스란 구조체의 상위 호환으로 이해할 수 있다.

c++에서 구조체와 클래스의 차이는 기본 접근 제어의 차이일 뿐, 나머지는 거의 같다.

 

 

객체지향 프로그래밍(OOP)

모든 데이터를 객체(object)로 취급하며, 객체가 바로 프로그래밍의 중심이 된다.

객체란?
실생활에서 우리가 인식할 수 있는 사물로 이해할 수 있다.
이러한 객체의 상태와 행동을 구체화하는 형태의 프로그래밍이 바로 객체 지향 프로그래밍이다.
또한, 이와 같은 객체를 만들어 내기 위한 틀과 같은 개념이 바로 클래스이다.

 

 

객체 지향 프로그래밍의 특징

  1. 추상화
  2. 캡슐화
  3. 정보 은닉
  4. 상속성
  5. 다형성

 

 

인스턴스(instance)

C++에서 클래스는 구조체와 마찬가지로 사용자가 정의할 수 있는 일종의 타입이다.
따라서 클래스를 사용하기 위해서는 우선 해당 클래스 타입의 객체를 선언해야 한다.

이렇게 선언된 해당 클래스 타입의 객체를 인스턴스(instance), 메모리에 대입된 객체를 의미한다.

하나의 클래스에서 여러 개의 인스턴스를 생성할 수 있다.
이러한 인스턴스는 독립된 메모리 공간에 저장된 자신만의 멤버 변수를 가지지만,
멤버 함수는 모두 인스턴스가 공유한다.

728x90
반응형

'C++' 카테고리의 다른 글

C++  (0) 2019.05.05
C++  (0) 2019.05.04
C++  (0) 2019.05.04
C++  (0) 2019.05.04
C++  (0) 2019.05.04