explicit |
explicit은 위에서 설명한거와 같이 여기에서 AAA라는 생성자가 명시적으로 호출될 지언정 묵시적으로 호출되는 것은 막겠다는 것인데, C++에서 일반적인 객체 생성 방법은 AAA a1(10); 으로 사용한다. 이 문장은 생성자를 명시적으로 호출하는 부분이다.
AAA a1=10; , AAA a1(10); 이 두개의 문장은 완전히 똑같은 문장이 아니고, AAA a1=10; 의 의미는 C++ 스타일 초기화 문법으로 묵시적으로 형변환이 되어서 완료가 되는 형태를 가지고 있다.
그래서 C 스타일 초기화 문법이 호출되는 방식이 C++ 스타일로 묵시적으로 변환이 되어서 호출 되니까, 이 경우에는 객체 생성 과정에 있어서 AAA 생성자를 묵시적으로 호출하는 것이 되므로, 컴파일 에러가 난다. (묵시적 호출을 막고 있는 키워드 explicit을 사용하고 있으므로)
explicit이라는 문법이 필요한 이유는 C 스타일의 초기화 문법 자체가 혼란 스러울 수 있으므로, 클래스 생성자의 선언 및 사용을 할시에는 explicit을 써주는것이 좋다.
mutable |
mutable은 onst로 선언되어 있는 함수 내에서, 멤버 변수의 조작 가능한 변수로 선언하겠다는 의미를 가진다. 앞서 const에 대한 저자의 포스팅을 봤다면, mutable은 거의 쓸일이 없는 문법이라는걸 눈치 챘을 것이다.
'Programming > C / C++' 카테고리의 다른 글
[C++] 상속 첫번째, 멤버 이니셜라이저 (Member Initializer) 와 Protected (0) | 2010.09.15 |
---|---|
[C++] 상속과 다형성 (Inheritance & Polymorphism) (2) | 2010.09.15 |
[C++] 클래스와 static (0) | 2010.09.12 |
[C++] 클래스에서의 멤버 변수, 멤버 함수의 상수화 (const의 사용법) (2) | 2010.09.12 |
[C++의 특징 -5] This 포인터와 Friend (0) | 2010.09.12 |