본문 바로가기

C++

C++ 토막 지식(19.01.16) - class

Class


private and public

객체지향의 핵심 특성은 데이터 은닉화(data hiding)이다. 데이터 은닉화는 클래스 외부의 함수가 클래스 내부에 있는 정보에 접근하지 못하도록 막아주는 것이다. 보안 상의 문제 때문에 은닉화를 한다기보다는 클래스 외부에서 그 데이터로 접근할 필요가 없을 때 은닉함으로써 프로그래머가 실수를 저지를 가능성을 줄여준다. private 과 함께 선언된 변수나 함수들은 클래스 내부에서만 사용할 수 있고, public 과 함께 사용된다면 이와 반대로 외부에서도 접근할 수 있다.


클래스를 초기화 할 때는 Initializer List가 선호된다. 예를 들어 이중 연결 리스트를 위한 노드를 만든다면 다음과 같이 생성자를 만들어 초기화를 할 수 있다.


1
2
3
4
5
6
7
8
9
10
class Node
{
private:
    int data;
    Node *next;
    Node *prev;
public:
    Node(int n) : data(n), next(nullptr), prev(nullptr) {}
 
};
cs


const 멤버나 레퍼런스를 초기화하는 유일한 방법이 Initializer List라고 한다.


소멸자(Destructor)은 생성자에 의해 할당된 메모리를 돌려주는 역할을 한다.


dist1은 생성자를 통해 생성된 객체이며, dist2와 dist3는 복사 생성자를 통해서 생성된 객체이다. 별도의 복사 생성자를 만들지 않더라도 원래 객체와 복사의 대상이 되는 객체가 같다면 복사된다.

Distance dist1(11, 6.25); //two-arg constructor

Distance dist2(dist1); //one-arg constructor

Distance dist3 = dist1; //also one-arg constructor