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

다형성과 연산자 오버로딩

 

  • 다형성 : 동일한 함수나 연산자를 자료에 따라 다르게 동장하도록 적용할 수 있음
  • 연산자 오버로딩 : 사용 중인 연산자를 다른 용도로 다시 정의해 사용할 수 있게 하는 것.

상속성

 

  • 특정 객체의 성격을 다른 객체가 상속받아 사용할 수 있도록 하는 것
  • 자식 클래스가 부모 클래스의 메소드와 멤버변수를 상속받아 사용함

새로운 자료형(클래스) = 데이터의 저장(멤버변수) + 데이터를 처리할 메소드(멤버함수)

기존 C에 있던 구조체(각종 데이터 형의 모음)를 확장한 개념이다.

접근 지정자

현재 클래스

클래스 밖

private

o

x

public

o

x

 

private

 

  • 접근 지정자가 생략되면 디폴트로 private가 적용된다. 하지만 private:를 명시적으로 기술할 수있다.
  • private 멤버의 사용범위는 소속된 클래스내의 멤버함수로 국한된다.(데이터 은닉)
  • 일반적으로 멤버 변수를 private으로 설정한다.

public

 

  • public 멤버로 지정하기 위해 public:을 명시적으로 기술하여야한다.
  • 클래스 내의 멤버함수에서는 물론 객체가 선언되어 있는 영역이라면 어디서든지 객체명 다음에 멤버참조 연산자(.)로 연결하여 멤버함수를 사용할 수 있다.
  • private 멤버변수를 처리하기 위한 목적으로 작성하는 멤버함수는 일반적으로 public 멤버로 설정한다.

 

 

클래스의 선언

//클래스 선언

class 클래스명{

접근 지정자:

    자료형 멤버변수;

접근 지정자:

    자료형 멤버함수();

};

//멤버함수 정의

자료형 클래스명::멤버함수(){


}


클래스의 멤버함수 구현

 

  • 멤버함수를 정의할 때 그 함수가 어느 클래스에 소속되는지 나타내기 위해 함수의 이름 앞에 클래스 명을 명시한다. 이 때 클래스명 다음에 스코프연산자(::)을 사용한다.
  • 클래스의 멤버함수(=메소드)를 정의하는 목적 : 클래스 내에 정의된 private 멤버를 접근

객체 선언과 멤버 참조

클래스명 객체명1,...,객체명n;


클래스 멤버의 접근 방법

객체명.멤버변수;

객체명.멤버함수();


인라인 함수

함수가 호출되는 부분에 함수 내의 코드를 직접 넣어 '매크로' 처럼 처리해주는 예약어

inline 반환타입 클래스명::멤버함수명()


const 상수

변수를 상수로 만들어주는 예약어

값을 바꿀 수 없다.

const 자료형 변수명 = 초기값;

멤버 함수 매개변수 뒤에 const를 붙일 경우 함수 내에서 값을 변경하지 못하게 한다.


함수의 오버로딩

동일한 이름으로 함수를 여러번 정의하여 사용할 수 있다.

같은 의미로 사용하는 함수를 모두 다른 이름으로 정의시 프로그램을 작성할 때 함수명을 개별적으로 외워야함

 

  • 함수의 이름이 동일
  • 매개변수의 개수가 다름
  • 매개변수의 반환 자료형이 다름

 

ex) void print(int); void print(long); void print(int, long);



함수의 디폴트 매개변수

ex) void print(int x=10,int y=20, int z=30)


print(4,5,6);  => x=4 y=5 z=6

print(4,5);    => x=4 y=5 z=30

print(4);      => x=4 y=20 z=30

print();       => x=10 y=20 z=30


생성자

 

  • 기본 자료형으로 변수를 선언할 때 선언과 동시에 값을 주는 것을 초기화라고 함
  • 클래드가 객체를 생성할 때 기본 자료형처럼 초기값을 줄 수 있게 하는 역활
  • 생성자 이름은 클래스 이름과 동일
  • 자료형(반환값의 유형)을 지정하지 않음
  • 생성자의 호출은 명시적이지 않음 (객체를 선언 또는 생성 할때 컴파일러에 의해 자동으로 호출)
  • 객체의 초기화란 멤버변수의 초기화를 의미
  • 생성자도 오버로딩이 가능함

소멸자

 

  • 객체가 소멸될 때 자동으로 호출
  • 리소스 해제 작업을 위한 함수로 쓰임
  • 클래스 이름 앞에 ~(틸드)기호를 붙임
  • 자료형을 지정하지 않음
  • 호출이 명시적이지 않음
  • 객체 소멸시 자동으로 호출됨
  • 전달 매개변수를 지정할 수 없음(오버로딩 불가능)


'프로그래밍 > C++' 카테고리의 다른 글

(MFC) 대화상자  (0) 2016.07.09
(MFC) 메시지 처리  (0) 2016.07.09
(C++) Simple 한/영사전 예제  (0) 2016.07.09
(C++) 상속을 이용한 간단한 계산 클래스 구현  (0) 2016.07.09
(C++) 상속성  (0) 2016.07.09

+ Recent posts