- 객체배열의 초기화
초기화하는 생성자는 당연히 다른걸 써도 된다
초기화를 하지 않는 인덱스는 디폴트생성자가 실행되겠다
- 클래스 사용 범위 상수
클래스 사용 범위 = 클래스 밖이 아닌 안에서 정의되는 이름에 적용
위의 코드에서 배열생성에 오류가 났다
이유는 a의 값을 알지 못해서인데
클래스선언은 클래스가 어떻게 생겼는지 서술하는것이지 객체가 생성되는건 아니다
= 객체가 생성되는게 아니니 값을 저장 할 기억 공간이 없다
= array 선언부에 a의 값은 모른다
그렇기에 클래스 선언부 내부에 상수를 사용하려면 두가지 방법이 있다
enum을 사용하는 방법
enum은 정의만으로 메모리할당이 되지 않으며
[ 그래서 객체에 데이터 멤버를 생성하지 않는다 ]
define처럼 치환되는 방식이므로
객체가 생성되지 않아도 사용이 가능하다
static을 사용하는 방법
클래스 선언부 내부에 static을 사용하면 전역메모리에 올라가며 같은 클래스의 객체가 공유하고 사용 가능한
정적 멤버 변수가 된다
[정적 멤버 변수는 뒤에 자세히 나온다]
마찬가지로 객체의 생성과는 상관이 없기에 가능한 부분이다
- enum class
C++11 에서 열거자에게 클래스 범위를 갖게하는 새로운 열거자 형식을 제공하였다
열거자가 클래스 범위를 가지고 있기 때문에 저렇게 다른 enum정의의 식별자와 이름이 충돌할 가능성을 없앴다
단 그렇기 때문에 기존에 그냥 사용했던것과 다르게 구별할 문법이 필요한데 enumName::을 사용하면 된다
위에서 (int)로 형변환을 해준 이유는 enumClass에서 변수형 관리가 강화되었기 때문이다
기존enum처럼 일부상황에서 자동으로int형으로 암시적 전환이 이루어지지 않는다
'C++ > [책] C++ 기초 플러스' 카테고리의 다른 글
[ 709p ~ 726p ] 연산자 오버로딩, 연산자 함수, 오버로딩 제약 (0) | 2021.09.13 |
---|---|
※[ 694p ~ 708p ] 추상화 데이터타입 (0) | 2021.08.28 |
[ 651p ~ 684p ] 생성자, 디폴트생성자, 파괴자, const멤버함수, this포인터 (0) | 2021.08.24 |
[ 616p ~ 650p ] 추상화, 클래스, 사용자 범위 결정 연산자, 인라인 메서드, 멤버함수 (0) | 2021.08.24 |
[ 596p ~615p ] 위치지정new, 선언영역 & 잠재 사용 범위, 이름공간, using선언 & using지시 (0) | 2021.08.18 |