c++ 언어4 [C++] 위임 생성자, 초기화 리스트 생성자 ▣ 생성자 처리 위임 ● 위임 생성자(delegating constructor) 선언 ▷ C++11 이후에 생긴 생성자 ▷ 생성자 작성 코드의 중복을 줄이는 효과가 있다. ▷ 초기화 리스트에 앞에서 선언됐던 생성자를 사용해서 새로운 생성자를 선언하게 한다. 위임 생성자: 앞에서 선언된 생성자를 이용하여 선언되는 생성자 타겟 생성자: 위임의 대상이 되는 생성자 ● 예시 - VecF 클래스 .... class VecF { int n; float *arr; public: VecF(int d, float* a=nullptr) : n{ d } { arr = new float[d]; if (a) memcpy(arr, a, sizeof(float) *n); } /*복사 생성자*/ VecF(const VecF& fv).. 2020. 8. 29. [C++] 자료구조 스택 Stack 구현하기 ▣ 스택 Stack은 뭔가? ● 데이터를 저장하는 자료구조의 한 종류이다. ● 스택의 기본 연산 ▷ push: 데이터를 저장하는 연산 ▷pop: 마지막으로 저장한 데이터를 인출하는 연산 ▷ LIFO : Last Input First Out ▣ 예제 - CharStack 클래스 ● CharStack 클래스 ▷ a문자를 최대 20개까지 저장할 수 있는 스택을 나타내는 클래스 ▷ 스택 객체는 데이터를 저장(push)하고 인출(pop)한다. ▷ 스택이 비었는지 가득찼는지 검사할 수 있다. ▷ 스택을 이용해서 입력된 단어를 역순으로 출력하는 프로그램을 만든다. 멤버함수 비고 CharStack( ) 생성자 bool chkEmpty( ) 스택이 비었는지 검사 bool chkFull( ) 스택이 가득찼는지 검사 boo.. 2020. 8. 28. C++ 언어 기초 (8) - static 데이터 멤버와 static 멤버함수 ▣ 객체의 메모리 공간 ● 객체를 저장하기 위한 메모리 공간 ▷ 일반적으로 객체마다 개별적으로 데이터 멤버가 메모리 공간을 할당받아 각각 존재한다. 멤버함수는 재호출이 가능한 구조이기 때문에 객체마다 개별적으로 멤버함수를 가질 필요 없이 공유해서 사용한다. ▷ 때에 따라 클래스 전체에 속하는 데이터 멤버를 사용하고 싶을 때도 있다. --> static 데이터 멤버 ● static 데이터 멤버 ▷ 클래스에 속하는 모든 객체들이 공유하는 데이터 멤버 ▷ 객체 생성과 관계 없이 프로그램이 시작되면 static 데이터 멤버를 위한 메모리 공간이 할당된다. ▷ 일반 데이터 멤버와는 달리, static 데이터 멤버는 클래스 선언문 내에서는 선언만 하고 클래스 외부에서 별도로 정의해야 한다. ▷ static 데이터 .. 2020. 8. 28. C++ 언어 기초 (7) - 디폴트/복사/이동 생성자 ▣ 디폴트 생성자 ● 디폴트 생성자(default constructor)란? ▷ 매개변수가 없는 생성자, 또는 모든 매개변수에 디폴트 인수가 지정된 생성자 ▷ 클래스 선언 시 생성자를 선언 안하면 컴파일러가 알아서 디폴트 생성자를 정의해준다. ▷ 생성자를 하나라도 선언하면 컴파일러는 묵시적으로 디폴트 생성자 정의하지 않는다. ● 묵시적 디폴트 생성자 ▷ 클래스 내에 생성자를 따로 선언해주지 않아도 컴파일러가 알아서 Counter(){ } 과 같이 묵시적 디폴트 생성자를 만들어준다. 클래스 외부에서 객체를 만들 때도 Counter cnt; 와 같이 매개변수 없이 만들 수 있다. /* Counter.h */ class Counter{ int value; public: //Counter() {} //생성자를 .. 2020. 8. 28. 이전 1 다음 반응형