• 객체배열의 초기화

 

초기화하는 생성자는 당연히 다른걸 써도 된다

초기화를 하지 않는 인덱스는 디폴트생성자가 실행되겠다

 


  • 클래스 사용 범위 상수

클래스 사용 범위 = 클래스 밖이 아닌 안에서 정의되는 이름에 적용

 

위의 코드에서 배열생성에 오류가 났다

이유는 a의 값을 알지 못해서인데

 

클래스선언은 클래스가 어떻게 생겼는지 서술하는것이지 객체가 생성되는건 아니다

= 객체가 생성되는게 아니니 값을 저장 할 기억 공간이 없다

= array 선언부에 a의 값은 모른다

 

그렇기에 클래스 선언부 내부에 상수를 사용하려면 두가지 방법이 있다

 

enum을 사용하는 방법

 enum은 정의만으로 메모리할당이 되지 않으며

[ 그래서 객체에 데이터 멤버를 생성하지 않는다 ]

define처럼 치환되는 방식이므로

객체가 생성되지 않아도 사용이 가능하다

 

 

static을 사용하는 방법

 

클래스 선언부 내부에 static을 사용하면 전역메모리에 올라가며 같은 클래스의 객체가 공유하고 사용 가능한

정적 멤버 변수가 된다

[정적 멤버 변수는 뒤에 자세히 나온다]

 

마찬가지로 객체의 생성과는 상관이 없기에 가능한 부분이다

 


  • enum class

C++11 에서 열거자에게 클래스 범위를 갖게하는 새로운 열거자 형식을 제공하였다

모두 enum class

열거자가 클래스 범위를 가지고 있기 때문에 저렇게 다른 enum정의의 식별자와 이름이 충돌할 가능성을 없앴다

 

단 그렇기 때문에 기존에 그냥 사용했던것과 다르게 구별할 문법이 필요한데 enumName::을 사용하면 된다

위에서 (int)로 형변환을 해준 이유는 enumClass에서 변수형 관리가 강화되었기 때문이다

기존enum처럼 일부상황에서 자동으로int형으로 암시적 전환이 이루어지지 않는다

+ Recent posts