explicit 3

const, friend, static, mutable, explicit

const const는 값을 상수로 선언할 수 있도록 도와주는 키워드다. const를 앞에 붙이면 값은 변경할 수 없게 된다. const의 선언 유무도 함수 오버로딩 조건에 해당이 된다. class Test { public: void Func() { } void Func() const { } }; 객체도 상수화 할 수 있다. 이 객체를 대상으로는 const 멤버 함수의 호출만 허용한다. class SoSimple { private: int num; public; SoSimple(int n) : num(n){ } // 생성자 SoSimple& NotConstFunc(int n) { num+=n; } void ConstFunc() const // const 함수 { cout

복사 생성자

복사 생성자란? 멤버 대 멤버 복사를 실행한다. 복사 생성자를 정의하지 않으면 멤버 대 멤버의 복사를 진행하는 디폴트 복사 생성자가 자동으로 삽입된다. class Point { private: int x; int y; public: Point(int x, int y) : x(x), y(y) { } // 디폴트 생성자 Point(const Point &copy) : x(copy.x), y(copy.y){ } // 디폴트 복사 생성자 }; 깊은 복사와 얕은 복사 얕은 복사 멤버변수의 멤버 대 멤버 복사만 실행한다. Person man1("Kang", 29); Person man2 = man1; 깊은 복사 메모리 공간 할당 후 문자열 복사 할당된 메모리의 주소 값을 멤버에 저장한다. Person(const P..

Modern Cpp에 대해 정리하기 전 프리뷰

용어 사용 선언(declaration) : 코드에 사용되는 어떤 대상의 이름과 타입을 컴파일러에게 알려주는 것 std::size_t numDigits(int number); // 함수 선언 extern int x; // 객체 선언 class Widget; // 클래스 선언 template class GraphNode; // 템플릿 선언 시그니처(signature) : 함수의 매개변수 리스트와 반환 타입 위의 경우 numDigits 함수의 시그니처는 std::size_t(int) 정의(definition) : 선언에서 빠진 구체적인 세부사항을 컴파일러에게 제공하는 것 함수에 대한 정의는 함수에 대한 코드 본문을 제공하는것이다. 클래스에 대한 정의는 클래스의 멤버를 넣어 준 결과이다. 초기화(initiali..