그냥 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() 호출을 한다.
*접근제어자에 대해 간단한 포스팅도 예정
'Programming > C, C++' 카테고리의 다른 글
strtok()의 작동과정중 유의점 (0) | 2021.05.18 |
---|---|
자꾸 잊어버려서 써두는 scanf 경고 무시 (0) | 2021.04.06 |
scanf와 scanf_s의 차이 (0) | 2020.02.07 |
메모리의 동적할당 malloc (0) | 2020.02.07 |
구조체크기할당조절 pragma pack (0) | 2020.02.05 |