[열혈 C++] Chapter 4

동글·2022년 3월 20일
0

C++

목록 보기
4/5

정보은닉

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

캡슐화

  • 하나의 목적 하에 둘 이상의 기능이 모여 목적을 달성
  • 정보은닉이 기본적으로 포함됨

const 함수

  • 해당 함수 내에서는 멤버변수에 저장된 값을 변경하지 않겠다 선언
  • const 함수 내에서는 const가 아닌 함수의 호출이 제한됨
    ex) void ShowRecInfo() const;

생성자

  • 객체 생성시 딱 한번 호출
  • ex) SimpleClass sc(20); SimpleClass *ptr = new SimpleClass(20);
  • 전달 값 없을 때

    SimpleClass sc1(); (X)
    SimpleClass sc1; (O)

멤버 이니셜라이저(Member Initializer)

  • 선언과 동시에 초기화가 이루어진다 -> const, 참조자 멤버변수 초기화 가능
    class SimpleClass
    {
    private:
    	int &ref;
    	const int num;
    public:
    	SimpleClass(int &r, const int n) : ref(r), num(n) { }
    }

디폴트 생성자(Default Constructor)

  • 생성자를 정의하지 않는 클래스에는 C++ 컴파일러에 의해서 디폴트 생성자가 자동으로 삽입된다
SimpleClass(){} // 디폴트 생성자
  • 생성자가 정의 된 경우, 디폴트 생성자는 삽입되지 않는다
    -> 필요시 void형 생성자를 별도로 정의해야 함

소멸자

  • 형태 : 반환형 정의(x), void형으로 선언
  • 디폴트 소멸자(자동삽입)
    ~SimpleClass() { }

객체 배열

  • 호출할 생성자를 명시하지 못한다(인자를 전달하지 못한다)
    SimpleClass arr1[10];
    SimpleClass *arr2 = new SimpleClass[10];
  • 객체 포인터 배열을 이용하면 인자 전달 가능
    SimpleClass *parr[3];
    for(int i=0; i<2; i++);
    	parr[i] = new SimpleClass( ... );

this

this는 객체 자기자신의 주소 값을 가지는 포인터

// 예시1
class SimpleClass
{
private:
	int num;
public:
	void SimpleFunc(int num) { this->num = num }
   // SimpleClass(int num) : num(num)
}

0개의 댓글