경일 메타버스 20220602 9주차 3일 수업내용. C++ 프로그래밍 문법
클래스는 사용자 정의 타입으로 아래와 같은 멤버(Member)를 가질 수 있다. 멤버는 클래스의 구성 요소를 의미한다.
데이터 멤버
멤버 함수
내부 타입(Nested Type)
멤버 템플릿
각 멤버는 접근 한정자(Access Specifier)를 통해 클래스 외부에 공개 여부를 구분지어 설계한 의도대로만 사용하게 강제할 수 있다.
접근 한정자에는 public, protected, private이 있다.
class 대신 struct를 사용하면 기본 접근 지정자가 public으로 달라진다.
// struct의 기본 접근 지정자는 public이다.
struct B
{
int PublicData;
};
클래스가 가질 수 있는 멤버는 크게 비정적 멤버(Non-static Member)와 정적 멤버(Static Member)로 나눌 수 있다.
비정적 멤버는 인스턴스가 사용하는 멤버이며, 정적 멤버는 인스턴스와 관계없이 사용하는 멤버다.
그래서 비정적 멤버를 인스턴스 멤버라고도 한다.
비정적 멤버 함수에서는 인스턴스의 주소를 담고 있는 this 포인터라는 것으로 인스턴스의 데이터를 접근할 수 있다.
비정적 멤버 함수에는 const 수식이 가능
const로 수식된 비정적 멤버 함수에서는 데이터 수정이 불가능
컴파일러가 자동으로 만들어주는 비정적 메소드 : 기본 메소드(Default Method)
기본 메소드 중 모든 생성자는 기본적으로 변환 생성자(Converting Constructor)라고 한다.
생성자에 사용한 매개변수 목록에서 클래스 타입으로 암시적 변환이 일어난다.
변환 생성자 : https://en.cppreference.com/w/cpp/language/converting_constructor
static 키워드 -> 정적 멤버
정적 멤버는 프로세스 주소 공간 중 (정적)데이터 영역을 사용
정적 멤버는 타입 별로 단일의 멤버로 존재
정적 데이터 멤버는 상수 이외에는 정의가 안된다.
정적 멤버 함수(정적 메소드)는 인스턴스 메소드가 아니다
따라서 정적 메소드는 const 수식이 불가능하다.
또한 this 포인터가 존재하지 않는다.
반대로 인스턴스 메소드에서 정적 메소드는 호출 가능하다.
정적 멤버 함수(정적 메소드)는 또한 단독으로도 호출 가능하다.
선언(Declaration) : 식별자를 컴파일러에게 알려주는 것
정의(Definition) : 선언의 일종으로, (컴퓨터의 입장에서)식별자와 관련된 모든 정보를 제공하는 구문
할당(Assignment) : 메모리에 데이터를 저장하는 것
초기화(Initialization) : 선언과 함께 할당하는 것