본문 바로가기
언어/C++

[C++] 클래스와 객체

by merona99 2019. 5. 19.
반응형

[C++] 클래스와 객체

 

 

캡슐화 : 객체의 구성 요소들을 캡슐로 싸서 보호하고 볼 수 없게 하는 것(객체의 가장 본질적인 특징)

※ 일부는 공개함 -> 객체들이 서로 정보를 교환하고 통신하기 위해서

 

클래스 : 객체를 정의하는 틀

객체 : 멤버 함수(행동 behavior)와 멤버 변수(객체의 상태 state)로 구성

 

<클래스 선언부>

 

<클래스 멤버>

변수와 함수로 구성

 

멤버 변수

멤버 변수

멤버 함수

멤버 함수

  • 원형형태로 선언
  • 리턴 타입, 매개 변수 리스트 등이 모두 선언되어야 함

 

<접근 지정자>

public 멤버클래스의 일부 멤버들을 다른 클래스와의 통신을 위해 외부에 공개함

private 멤버 : 클래스 내의 멤버 함수들에게만 접근이 허용됨

protected 멤버 : 클래스 내의 멤버 함수와 이 클래스를 상속받은 파생 클래스의 멤버 함수에게만 접근이 허용됨

 

접근 지정의 디폴트 = private

멤버 변수는 private으로 지정하는 것이 바람직함

생성자는 public으로 지정

 

 

<클래스 구현부>

class 구현부

double : 함수의 리턴 타입

Circle : 클래스 이름

:: : 범위 지정 연산자

getArea() : 멤버 함수명과 매개 변수

 

클래스 선언과 구현의 분리의 이유 : 클래스의 재사용을 위해서 (다른 C++파일에서는 클래스의 선언부만 필요)

 

  • 객체가 생성되면 클래스 크기의 메모리가 할당
  • 객체의 멤버접근은 C언어의 class와 똑같이 하면 됨

<생성자>

생성자(constructor) 라는 특별한 멤버 함수를 통해 객체를 초기화

  • 생성자의 목적은 객체가 생성될 때 필요한 초기 작업을 위함임
  • 생성자 함수는 오직 한 번만 실행
  • 생성자 함수의 이름은 클래스 이름과 동일하게 작성
  • 생성자 함수의 원형에 리턴 타입을 선언x
  • 생성자는 중복o

생성자 중복

 

<위임 생성자>

위임 생성자

Circle() 생성자가 호출되면 Circle() 생성자는 자신의 코드를 실행하기 위해 Circle(1)을 호출

 

Circle() = 기본 생성자 (디폴트 생성자 default constructor)

             매개 변수 없는 생성자

생성자가 하나도 없는 경우에 컴파일러는 자동으로 기본 생성자를 삽입

but 생성자가 하나라도 선언된 클래스의 경우 컴파일러는 기본 생성자를 자동 삽입x

 

생성자가 하나 선언된 상태에서 기본 생성자를 호출한다면 오류 발생

 

 

<소멸자>

  • 소멸자의 목적은 객체가 사라질 때 필요한 마무리 작업을 위함임
  • 소멸자의 이름은 클래스 이름 앞에 ~를 붙인다
  • 소멸자는 리턴 타입x 어떤 값도 리턴x
  • 소멸자는 오직 한 개만 존재, 매개 변수x
  • 소멸자가 선언되어 있지 않으면 기본 소멸자가 자동으로 생성

소멸자

 

<생성자/소멸자 실행 순서>

 

생성된 순서의 반대순으로 소멸

 

 

<헤더 파일과 cpp 파일 분리>

cpp 파일에 해당 헤더파일명 ex) "sub.h"를 선언

 

ex)

헤더파일 선언
Chap3.zip
0.00MB

반응형

'언어 > C++' 카테고리의 다른 글

[C++] 함수와 참조, 복사 생성자  (0) 2019.05.24
[C++] 객체 포인터와 객체 배열 & 동적 생성  (0) 2019.05.22
[C++] 화면 출력/입력  (0) 2019.04.10

댓글