프로그래밍/TIL(Today I Learned) 90

14강 템플릿(2)

1. 함수 템플릿- 일반 함수의 템플릿 선언 형식template returntype funcTemplateName(fParameterList){ ... } 2. 표준 템플릿 라이브러리- C++ ㅓ에 제공되는 표준 컨테이너 클래스 템플릿 라이브러리- 벡터, 리스트, 스택, 큐 등의 컨테이너와 이들을 처리하기 위해 사용할 수 있는 여러가지 연산 포함- STL - 컨테이너- 데이터 저장- int, float 과 같은 기본 자료형 데이터나 사용자 정의 클래스의 객체 등 저장- 다양한 연산이 제공되어 편리하게 데이터 저장 가능- 컨테이너 종류 : 순차 컨테이너, 연상 컨테이너-동일한 자료형의 객체들을 선형적인 구조로 저장- 키를 이용한 검색 기능을 제공- 포인터의 개념이 일반화된 것- 컨테이너의 유형에 따라 서로..

12강 상속(3)

1. 추상클래스- 사용목적 : 특정 그룹에 속하는 클래스들이 반드시 가지고 있어야 할 행위를 지정함으로써 필요한 행위를 정의하는 것을 누락하지 않도록 함 - 상세 클래스- 클래스의 모든 요소가 구체적으로 구현되어 직접적인 사례가 존재하는 클래스- 상세클래스는 직접 객체를 정의할 수 있음 - 추상 클래스의 선언 : 순수 가상함수를 포함하는 클래스를 선언- 상세 클래스의 선언 : 순수가상함수를 포함하지 않는 클래스를 선언 2. 다중상속- 2개 이상의 ㅣ기초 클래스로부터 상속 받는 것- 다중상속에서 공통 기초 클래스의 중복 상속

상속(2)

1. 상속과 포인터 2. 가상함수- 객체 포인터와 재정의된 멤버함수 호출- 객체 포인터에 의해 멤버함수를 호출할 경우 컴파일러가 포인터의 유형에 따라 호출할 멤버함수를 결정함- 정적 연결- 동적 연결 - 객체 포인터를 통해 객체의 멤버함수를 호출하 경우 포인터가 가리키는 실제 객체가 무엇인가에 따라 실행중에 멤버함수를 결정하는 방법- C++ 에서는 가상함수로 동적 연결을 구현함- 기초 클래스에서 가상함수로 선언한 멤버함수를 파생클래스에서 재정의하면 가상함수로 선언하지 않아도 가상함수임 - 소멸자의 동적 연결- 업 캐스팅 - 파생 클래스의 포인터를 기초 클래스 포인터로 변환하는 것- 자동 형 변환을 통해 업 캐스팅을 할 수 있음- 다운 캐스팅- 기초 클래스 포인터를 파생 클래스 포인터로 변환하는 것- 자동..

상속 (1)

1. 기초클래스와 파생 클래스- 클래스의 상속 : 일반화와 특수화를 통한 클래스 계층구조 설계 2. 파생 클래스의 생성자 및 소멸자- 생성자 및 소멸자의 실행 순서- 생성자 : 기초 클래스 생성자 -> 파생 클래스 생성자- 파생 클래스는 기초 클래스의 내용을 바탕으로 하고 있음- 소멸자 : 파생클래스 소멸자 -> 기초 클래스 소멸자- 기초 클래스의 속성이 제거되기 전에 이를 활용할 가능성이 있는 파생 클래스 객체를 제거해야 함- 가시성의 상속- 기초클래스로부터 상속받은 멤버의 가시성- 클래스 선언문의 가시성 상속 지시어에 따라 기초 클래스의 멤버가 파생 크래스에 상속되어 파생 클래스의 멤버로서 갖게 되는 가시성이 결정됨- 가시성 상속 지시어에 지시된 것이 가시성의 상한이 되도록 제한됨.3. 액세스 제어

9강 연산자의 다중정의(2)

1. 배열 첨자 연산자 []의 다중정의-[] 연산자- 배열의 첨자를 지정하는 이항 연산자- 피연산자 : 배열의 이름, 첨자 2. 문자열 클래스- C스타일 문자열- 문자열의 저장- char 형 배열이나 동적 할당 메모리, 문자열 상수에 저장- 문자열의 끝을 아릴기 위해 null문자('\0')를 사용함 3. 자료형의 변환 4. 연산자 다중정의의 주의사항

8강 연산자 다중정의(1)

1. 연산자 다중정의의 개념- 피연산자의 자료형과 연산자 : 동일한 연산자라도 피연산자의 자료형에 따라 구체적인 처리는 다르게 정의- C++에 정의된 연산자를 사용자가 선언한 클래스의 객체에 대하여 사용할 수 있도록 다중정의 하는 것- 주의사항- 연산자의 의미를 임의로 바꾸지 않는다.- 연산자의 고유한 특성이 유지되도록 한다 : 우선순위나 피연산자 수 불변/전위-후위 표기 연산자의 의미 유지- 다중정의 위치- 클래스의 멤버로 정의하는 방법 : 연산자의 구현 과정에서 객체의 멤버를 액세스 가능- 클래스 외부에서 정의하는 방법 : 객체의 private 멤버는 임의로 사용 불가2. 단항 연산자의 다중정의- 피연산자가 1개인 연산자- 전위표기법과 후위 표기법 > ++a / a++- 다중정의 형식ReturnCla..

15강 추상자료형

1. 추상자료형의 개요- 추상화 - 속성들의 일부분만을 가지고 주어진 작업이나 객체들을 필요한 정도로 묘사할 수 있는 방법을 지원하는 것- 유사성을 표현하고 차이점을 삭제함으로써 관련된 사항들을 하나로 묶어 표현하는 방법- 프로시저 추상화 : 어떻게 수행되는가는 기술하지 않고 무엇이 수행되는가를 묘사- 자료 추상화 : 자료형의 표현과 그에 관련된 연산들을 함께 묶어 캡슐화- 추상자료형(ADT, Abstract Data Type)- 자료를 그 자료의 처리 연산과 함께 선언할 수 있는 자료형- 정보 은닉 개념을 도입하여 프로그램을 쉽게 읽을 수 있고, 유지보수를 용이하게 할 수 있는 자료형- 추상자료형을 통해 향상되는 기본 목표1) 수정 용이성 : 프로그램 전체에서의 사용에 영향을 끼치지 않고 구현에 변화를..

14강 매개변수의 전달기법(2)

1. 매개변수 전달 기법2) 값 호출 또는 값 전달(call by value)- 형식 매개변수에 해당되는 기억 장소를 별도로 유지하는 방법- 실 매개변수 값이 어떠한 경우라도 변하지 않음- C, Pascal에서 기본적으로 사용> (1) 호출 프로그램은 실 매개변수에 해당되는 주소는 보냄> (2) 호출된 프로시점은 r-value를 구하여 자신의 형식 매개변수의 기억 장소에 복사하여 다른 지역 변수와 동일하게 취급하여 사용 3) 결과 호출(call by result) 또는 결과 전달- 호출된 프로시저가 값을 반환하는 한 가지 방법- 값 호출과 마찬가지로 호출된 프로시저가 형식 매개변수 값을 저장할 기억장소를 보유함>(1) 호출된 프로시저가 형식 매개변수를 지역 변수로 취급하여 모든 연산을 수행>(2) 호출 ..

13강 비지역 변수 참조 방법과 매개변수 전달 기법(1)

1. 비지역 변수 참조 방법- 블록 기반 언어- 동적 내포관계 : 단위 프로그램의 호출 관계를 의미- 정적 내포관계 : 정적 영역에 따른 비지역 변수의 영역 관계를 의미 1) 정적 체인 사용 기법- 모든 활성화 레코드에 정적 링크를 할당- 비지역 변수에 대한 참조 시 정적 체인을 따라 검색해서 먼저 발견된 변수를 참조- 검색 시간이 많이 필요하기때문에 실제로 사용하지는 않음- 정적 링크 : 작성된 프로그램의 정적 내포관계에 있는 활성화 레코드를 가리키는 포인터- 정적 체인 : 현재 활성화 레코드로부터 연결된 정적 링크의 순서2) 디스플레이 사용 기법- 비지역 변수들의 자료값에 대한 참조 시간을 줄이기 위한 구현 기법- 정적 링크 대신에 실행 시간 어느 시점에서나 정적 체인 관계를 디스플레이라고 부르는 1..