본문 바로가기

전체 글140

c/c++ 연산자 오버로딩 c/c++에서 기본으로 제공되는 연산자들을 클래스에서 사용하기 위해 오버로딩하여 비슷하거나 다른 연산방식을 위해 재정의해서 사용하는 기법. 규칙 1. 새로운 연산자는 창조 불가. - 없는걸 오버로딩할수는 없음. 2. 연산자는 non-static 클래스 멤버함수이거나 전역함수로 오버로딩 가능. 3. 기본 타입에 대해서는 재정의 불가. 4. 단항, 이항 연산자에 대해서 가능. 5. 첫 인자는 항상 호출 클래스의 refrence 형. 6. 함수명은 operator 연산자 반환형은 호출 클래스 형 이거나 호출 클래스의 refrence 형. 호출 클래스의 refrence 로 반환형을 지정하는 경우는 연산자를 연속으로 사용하기 위해서이다. 2020. 1. 22.
c/c++ 복사생성자 & 복사 대입연산자 복사 생성자 객체 생성시에 인자값으로 같은 클래스 객체를 넘겨주거나 객체 생성시에 같은 클래스 객체를 대입하려 한다면 호출되는 생성자. 오버로딩되어있지 않으면 컴파일러가 자동 생성함. 기본 복사생성자 : 컴파일러가 자동생성하는 복사생성자. 얕은 복사를 기본으로함. 얕은 복사 : 각 멤버 변수에 할당된 값만 복사. 동적 할당된 메모리까지 복사하지는 않음. 즉, 포인터의 주소만 가져올뿐, 본 객체에서 할당된 메모리에 저장된 값까진 복사하지 않음. 깊은 복사 : 동적 할당된 메모리에 저장된 값까지 복사. 인자값으로 해당 객체의 const refrence 가 필요하며, 복사중에 대상 객체가 변경되는것을 막고, 중첩해서 복사생성자가 호출되는 것을 막기 위함.. 복사생성자 호출되는 경우 1. 객체를 생성할때, 기존.. 2020. 1. 22.
Tree - Normal 나무를 형상화한 자료구조로 뿌리부터 가지, 나뭇잎으로 세분화되는 구조에서 착안된 구조. 그래프 구조의 특별한 타입이기도 하다. 루트 : 트리의 최상위 노드. 리프 : 트리의 최하위 노드. 엣지 : 부모자식노드사이를 연결하는 선. 노드 : 트리의 구성요소. 자식과 연결될 포인터와 데이터를 저장할 공간을 가짐. 차수 : 같은 부모에 최다 연결된 노드의 수. 깊이 : 루트에서 해당 노드까지의 직선 엣지수 형제 노드 : 부모가 같은 노드들. 조상 노드 : 부모부터 루트까지의 모든 노드 자손 노드 : 자식에서 리프 노드까지의 모든 노드. 레벨 : 루트를 기준으로 1부터 깊이에 따른 노드집합. 트리의 특수한 타입으로 이진트리, 이진 탐색트리, AVL 트리, Red-Black 트리, B 트리, B+ 트리, 최소 신장.. 2020. 1. 21.
c/c++ 예외처리 예상치 못한 오류를 안전하게 처리해서 코드가 안전하게 동작할수 있도록 하는 기법. try, throw, catch 문 try 문 : 예외가 발생할 만한 코드 블록 throw 문 : try 블록에서 발생한 오류에 대한 정보 전달 던짐. catch 문 : 던져진 정보를 담아 처리할 내용을 담은 코드 블록. 순서대로 try { 예외가 발생할만한 코드 throw something; } catch (value something) { 예외 처리 코드. } try 문에서 예외가 발생하지 않으면 throw, catch 무시. try 문에서 예외가 터지면 throw를 통해 가까운 catch 문부터 검사. 없으면 바깥쪽 try문과 쌍을 이루는 catch 문 검사. 제일 바깥쪽까지 반복 후, 없으면 terminate() 함.. 2020. 1. 21.