컴파일러의 디폴트 제공 함수들(effective c++ 05)

2015. 7. 27. 03:53프로그래밍/Effective C++

728x90
728x90

디폴트 제공

클래스를 선언할 때 빈 클래스를 선언한다 하더라도 컴파일러는 기본적으로 

사 생성자(copy constructor), 복사 대입 연산자(copy assignment operator) 

그리고 소멸자(destructor)를 public, inline으로 제공한다.

* 만약 사용자가 디폴트로 제공하는 것을 선언했을 경우에는 생성자를 디폴트로 제공하지 않는다.

디폴트 생성 거부

디폴트로 제공되어진 것들은 정말 기본적으로 제공되어지는 것이기 때문에 동작이 적법해야만 한다. 

예를 들어 레퍼런스 변수와 같은 본래 가지고 있던 것 외에 바뀌면 안 되는 것들은 컴파일러가 디폴트 생성을 거부합니다.




위와 같이 레퍼런스 멤버가 있는 클래스는 디폴트 대입 연산자가 제공되지 않고 컴파일러는 컴파일을 거부하게 된다.



728x90
반응형