본문 바로가기

Programming/C, C++

C++ 클래스에대해

그냥 C언어에서 구조체가 있었다.

사용자정의 자료형, 사용자지정 자료형 등등 아무튼 의미는 같겠지만

위와같은 형식으로

서로다른 자료형들을 하나로 묶어주는 것이다.

 

C++에도 구조체와 비슷한 녀석이 있다.

바로 '클래스' 라는 것이다.

개념면에서는 많이 다르지만, 내 개인적인 경험상

구조체를 떠올린 덕분에 '클래스'에 대해 감을 잡기 쉬웠다.

 

그렇다면 제대로 클래스에 대해 정리를 해본다.

 

  • 클래스의 형태 예시

-기본적인 형태-

class 클래스명

{

private:

public:

}

 

-메모-

클래스 내부에는 보통 private과 public과같은 접근제어자*로 자료들을 구분하여 사용한다.

필요에따라 활용하면 되는데, 비주얼스튜디오 버전이나 설정에 따라

기본적으로 private: 과 public: 이 미리 작성되어 있기도 한듯 하다.

접근제어자에 대한 설명은 이후 포스팅할 예정이니 그쪽을 참고.

 

아무튼 그 아래에 중요한 부분이 있다.

public:

클래스명();

~클래스명();

 

형태의 부분이다.

바로 '생성자'와 '소멸자'이다.

둘 다 메소드의 한 종류인데 각기 하는일이 다르다.

 

  • 생성자

클래스가 객체로 생성되는 경우에 호출하는 메소드

클래스와 이름이 같아야한다.

반환하는 자료형이 존재하지 않는다.

 

  • 소멸자

클래스가 객체로 생성되었다가, 소멸할때 호출하는 메소드

생성자와 마찬가지로 클래스와 이름이 같아야하며 반환하는 자료형이 없다.

이름 앞에 '~'기호가 붙어있는것이 소멸자이다.

 

 

생성자와 소멸자의 작동방식은 위 코드의 아래부분까지 보며 설명한다.

25라인에서 StudentInfo클래스를 Student1이라는 이름의 객체로 생성되었다.

바로 이때 StudentInfo() 생성자가 호출되어 17라인이 실행된다.

Student1의 private int id에 10101이 들어가고, private char name[256]에 "NoInfo"가 들어간다.

다시 main함수로 돌아와서 25라인 아래쪽으로 쭉 실행이 되고,

43라인이 끝나고 main함수가 끝나면 Student1객체가 소멸되며

이때는 ~StudentInfo() 소멸자가 호출되어 라인 18이 실행된다.

그래서 "exit StudentInfo Class"라는 문자열을 출력한 뒤 끝나게 된다.

 

만약 StudnetInfo 클래스의 객체가 N개 만들어진다면

N번의 생성자 StudentInfo() 호출을 하고

N번의 소멸자 ~StudentInfo() 호출을 한다.

 

 

 

 

*접근제어자에 대해 간단한 포스팅도 예정