CPP_어소_51_클래스 (1)

CJB_ny·2022년 6월 29일
0

CPP_AROTHO

목록 보기
50/83
post-thumbnail

C++나올떄, 기존 C에서 없던 구조체의 객체 지향적인 부분들이 C++의 클래스가 들고 나옴.

구조체란?

사용자가 직접 정의한 자료형

클래스란?

사용자가 정의한 자료형

C에서는 구조체를

typedef로 재정의해서 사용해야 되었던것과는 달리

그냥 이렇게하고

tMy 하고 하면됨.

이제 이렇게 할 것임 => 완전히 C++스타일로 간다.


접근 제한 지정자.

기존의 C에서는 필드에 아무나 접근이 씹가능임.

그런데

나만의 자료형(class)를 정의하고

이렇게 하고 private: , public :, protected라는

접근 제한 지정자를 통해 접근을 제어 씹가능.

생성자

C#이랑 똑같은 개념있다. 반환타입 없고 초기값 셋팅

이런식으로.

클래스는 만들때에 생성자 호출을 보장 해주겠다. => 문법임.

디스어셈블리 가보면

call CMy::CMy로 호출함.

초기화의 개념

객체가 만들어짐과 동시에 값을 주어주는 것을 초기화라고한다.

그래서 클래스의 생성자 부분도 초기화가 아님

생성자 함수를 호출해서 자기자신의 필드? 멤버 변수에 접근해서 값을 넣어주니까.

이렇게 생성자 생성 -> 함수호출후 변수에 값 할당 2단계임

그래서

이니셜라이져 문법 제공 ❗

CMy()

이런식으로 이니셜라이즈 가능

(C#이랑 조금 다름)

어떤 자료형들은 사라질때

꼭 해주어야 하는 일이 있을 수도 있다.

소멸자 (C#에서는 종료자)

먼저 C#에서는
클래스이름 앞에 ~ 붙임 ~Cat() { } 이런식으로
그러면 CLR의 가비지 컬렉터가 객체가 소멸되는 시점 알아서 판단해서 이 종료자 호출해줌.

지금 클래스가 main함수 지역내에 있어서

return 0; 하기전에

이렇게 소멸자 호출된다.

생성자, 소멸자 안 만들경우 ❗

그러면 이게 없는거냐?

아니다 컴파일러가 알아서 자동으로 만든다 but 아무런 기능이 없다.

이렇게 기본으로 만들어진 애들을 default생성자, default소멸자 라고한다.

멤버함수 ❗ 조건

CMy에 있는 함수를 사용하고 싶다면

범위 지정 연산자 :: scope 연산자 사용

CMy::SetInit(10) 이런식으로 안됨.

반드시 객체가 필요함 ❗

클래스의 실체화가 되어있는 변수에 해당하는 "객체"가 필요함.

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글