관리 메뉴

ComputerVision Jack

[C++ 프로그래밍 Chapter4] 본문

Programming Language/C++ Programming

[C++ 프로그래밍 Chapter4]

JackYoon 2020. 1. 19. 21:18
반응형

[정보은닉 Information Hiding]

private

제한된 방법으로의 접근만 허용을 해서 잘못된 값이 저장되지 않도록 도와야하고,

실수가 쉽게 발견되도록 해야한다.

따라서 private로 선언해서 임의의 값이 저장되는 것을 막는다.

 

엑세스 함수(access function)

Set 함수, Get 함수를 생성하여 private변수에 대한 접근을 정의한다

 

멤버 변수로 private으로 선언하고, 해당 변수에 접근하는 함수를 별도로 정의해서, 안전한 형태로 멤버 변수의 접근을 유도하는 것이 바로 '정보 은닉'이다.

 

const 함수

함수 내에서는 멤버 변수에 저장된 값을 변경하지 않는다.

함수를 const로 선언하면, 멤버 변수의 값을 변경했을 때, 컴파일 에러로 알 수 있다.

set get함수를 const로 선언한다.

또한 const함수 내에서 const가 아닌 함수의 호출이 제한된다.

[캡슐화 Encapsulation]

필요한 정보를 하나의 클래스 안으로 모아 놓은것.

캡슐화는 스스로 구현 단위를 분리하여 캡슐화 해봐야 한다. 정도를 알아내기가 힘들다.

[생성자(Constructor)와 소멸자(Destructor)]

class Simple{

    private:

        int num;

    public:

        Simple(int number){ num = number; }

        int GetNum() const{  return num; }

};

생성자Constructor)

  • 클래스 이름과 함수의 이름이 동일
  • 반환형이 선언되어 있지 않으며 실제로 반환하지 않는다.

객체 생성시 딱 한번만 호출이된다.

Simple sp(20); 전역

Simple *ptr = new Simple(30); 동적

 

생성자도 함수 일종이니 오버로딩이 가능.

매개변수 디폴트 값을 선언할 수 있다.

void형 생성자의 호출문은 인정하지 않는다. 함수 원형 선언인지를 구분할 수 없다.

 

맴버 이니셜라이저 :

생성자 뒤에 : 표시로 멤버 변수를 초기화 하는 것.

이니셜라이저를 이용하면 선언과 동시에 초기화가 이뤄지는 형태로 바이너리 코드가 생성된다.

const 변수도 가능하다.

 

디폴트 생성자

메모리 공간 할당 이후 생성자까지 호출이 이루어져야 객체.

객체가 되기 위해 반드시 하나의 생성자가 호출된다.(malloc함수를 사용하면 생성자가 사용되지 않는다.)

 

private 생성자

객체 생성방법을 제한할 때, 유용하게 사용

 

소멸자(Destructor)

객체 소멸시 반드시 호출되는 것은 소멸자이다.

클래스 이름 앞에 ~가 붙는다.

class AAA{

    public:

        AAA() { }

        ~AAA() { }

};

[클래스와 배열 this포인터]

객체 배열. 배열을 선언하는 자료형이 클래스가 된다.

Simple *ptr = new Simple[10]; - 객체 10개 생성

 

객체 배열 - 객체로 이루어진 배열

객체 포인터 배열 - 객체의 주소 값 저장이 가능한 포인터 변수 배열

 

this 포인터

객체 자신을 가리키는 용도로 사용되는 포인터

객체 자신의 주소 값을 의미한다.

따라서 객체를 참조하는 포인터라고 생각하면 된다.

매개 변수와 멤버 변수의 이름이 중복되었을 경우에 사용한다.

 

self - Reference

객체 자신을 참조할 수 있는 참조자. this 포인터를 이용하여 구현한다.

반응형

'Programming Language > C++ Programming' 카테고리의 다른 글

[C++프로그래밍 Chapter6]  (0) 2020.01.23
[C++프로그래밍 Chapter5]  (2) 2020.01.21
[c++ 프로그래밍 Chapter3]  (0) 2020.01.16
[C++ 프로그래밍 Chapter2]  (0) 2020.01.14
[C++ 프로그래밍 Chapter1]  (0) 2020.01.14
Comments