객체지향 프로그래밍의 특징
다형성과 연산자 오버로딩
- 다형성 : 동일한 함수나 연산자를 자료에 따라 다르게 동장하도록 적용할 수 있음
- 연산자 오버로딩 : 사용 중인 연산자를 다른 용도로 다시 정의해 사용할 수 있게 하는 것.
상속성
- 특정 객체의 성격을 다른 객체가 상속받아 사용할 수 있도록 하는 것
- 자식 클래스가 부모 클래스의 메소드와 멤버변수를 상속받아 사용함
새로운 자료형(클래스) = 데이터의 저장(멤버변수) + 데이터를 처리할 메소드(멤버함수)
기존 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++) 클래스와 객체|작성자 길가다주은노트북
'프로그래밍 > 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 |