본문 바로가기

생성자

[EC++] 항목 5. C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자 만약 우리가 클래스를 만들때, 클래스안에 아무것도 넣지 않았다면, 컴파일러가 복사 생성자(copy constructor), 복사 대입 연산자(copy assignment operator), 소멸자(destructor)를 저절로 선언해 주게 됩니다. 이때 컴파일러가 만드는 함수의 형태는 모두 기본형이고 public 멤버 이면서 inline 함수 입니다. class Empty(){}; 즉, 위와 같이 선언된 클래스는 아래와 같다는 이야기 입니다. class Empty{ public: Empty() {} //기본 생성자 Empty(const Empty& emt){} //복사 생성자 ~Empty(){} //소멸자 Empty& operator = (const Empty& emt){} //복사 대입 연산자 }; 기.. 더보기
[C++] 생성자와 소멸자 (Constructor & Destructor) - 두번째 저번 포스팅에 이어 두번째로 이번에는 소멸자에 대해서 얘기해 보겠습니다. 우선 소멸자를 이야기 하기 전에 객체가 소멸되는 시점에 관해서 언급 해보도록 하죠. * 객체가 소멸되는 시점 : 함수 내에 지역적으로 변수가 선언되면 함수 호출이 끝남과 동시에 소멸이 된다. 이와 마찬가지로 객체도 함수내에서 선언된다고 하면, 함수 호출이 끝나면 소멸되게 된다. * 전역적으로 선언된 객체 : 전역변수는 프로그램 시작과 동시에 메모리에 올라갔다가, 프로그램이 종료될때 소멸된다. 객체도 마찬가지로 똑같은 동작을 하지만, 객체는 이렇게 생성할 일은 거의 없다고 보면 된다. * 전역 : 일반적인 객체지향에 전역이란 개념은 존재 하지 않는다. 이를 대신하기 위한 static 멤버 변수, 멤버 함수가 존재 한다. (이거 대해서.. 더보기
[C++] 생성자와 소멸자 (Constructor & Destructor) - 첫번째 1. 생성자 (Constructor) : 생성자는 객체를 생성할 때 자동적으로 호출되는 함수로 클래스와 같은 이름의 형태를 띤 함수이며, 리턴형이 없으며, 리턴 하지도 않는 특징을 가지고 있다. 그럼 왜 생성자가 필요할까? 바로 객체를 생성과 동시에 초기화를 해주기 위해 필요하다. 객체를 생성과 동시에 초기화 주는 것이 클래스의 좋은 구조이기 때문에, C++는 정보은닉과 더불어 생성과 동시에 초기화라는 안전성을 제공하는 생성자라는 문법을 제공해 주는 것이다. 1-1. 생성자의 사용? : 생성자의 형태를 보면, 일단 세가지 형태를 가지고 있다. 첫번째로 디폴트 생성자 (Default Constructor), 인자가 있는 생성자, 마지막으로는 복사 생성자 (Copy Constructor) 이 세가지 형태가 .. 더보기