Week10 Polymorphism
const 타입 이름 : 선언이후 변경x
pointer to const ( ex: const int* ptr): const 변수 가리킴, const아녀도 가리킬수있고 상수취급, 가리키는 주소 바꿀수있음
const 변수 class안에서 변경법: 초기화 list 사용
타입 이름() const {} 으로 멤버함수 const설정가능, 이러면 const변수 읽어서 return 가능(읽기만 가능!! 변경x)
const 클래스명 이름(); 으로 const class object 설정가능, const함수만 부를수있음
함수 동적바인딩 하려면 앞에 virtual 붙여주기
virtual table안에 virtual 함수 가리키는 주소있음, 컴파일타임에 채워져서 런타임에 사용eek10 Polymorphism
pure virtual function: 함수정의x 선언만 ex) virtual void a()=0;
ㄴ이게 하나라도 있으면 abstract class, 자식이 이거 받으면 무족건 정의해줘야함
pure abstract class: 멤버변수x 전부 pure virtual 함수임 (파괴자 제외)
Week11 Copy Constructor
: 한 객체의 내용을 다른 객체로 복사하여 생성된 생성자 ex)Point(const Point &p){~}
default copy(얕은 복사): 배열 그냥 arr=p.arr하는거, 이러면 버그생길수도
user defined copy(깊은 복사): 배열 arr=new int[size]해서 하나하나 복사해오기
friend class: friend class my 라고 하면 my클래스에게 현재 클래스 접근권한 줌, private protected 변수 접근가능
static 변수: Class a 밖에서 쓰려면 int a::변수명=0; 이런식으로 클래스명::붙여서 쓰기, object 안만들어도 사용가능static함수내에선 static 변수만 접근가능, static함수는 virtual 선언xoperator overloading: 기존 연산자의 사용방법을 바꿈 (변수순서중요!!)

Week12 Template
template <typename T> : 해당 함수에 맞는거로 알아서 넣어줌
ㄴ인자에 따라서 overloading도 가능

class template: 만들때는 타입x object생성할때 타입설정 ex)Box(T d) : data(d) {} > Box<int> b1(10);
pointer type은 일반이랑 안맞아서 클래스명 <int*> 이런식으로 타입별로 정해둬야함(specialization)
typename T2 = int 이렇게해두면 int가 기본타입인거로 설정가능
class 내부함수도 따로 template 사용가능(변수명바꿔서)
template 상속: class base{} 로 해둔거 상속해오려면 :base<T> 로 표시
Week13 Standard Template Library1


vector <클래스명> 해서 class 객체를 담을수도 있음
vector <클래스명*> 해서 pointer 담을수 있음
2차원 벡터:vector<vector<int>> mat(3, vector<int>(4)); (3행 4열)
Container: vector같은거로 같은 타입의 여러객체를 저장 (vector는 순서가 중요한 sequence container)
Iterator: begin()첫번째원소, end()마지막 원소
*iterator: iterator가 가르키는 실제값 참조
rbegin, rend는 반대로
auto: 컴파일러가 자동으로 타입 유추
Week14 Standard Template Library1


list <타입> 이름: push_back(), push_front(), insert(), erase()가능
stack <타입> 이름: push(), pop() 가능
queue <타입> 이름: enqueue(), dequeue(), push(), pop() 가능
deque <타입> 이름: 양끝에서 넣고 빼기 둘다가능 (양방향큐)
set <타입> 이름: 오름차순 자동정렬, 중복제거 , insert()가능
ㄴ class도 set에 넣을수있음, 정렬기준 연산자 필요 (ex: operator <)
pair <타입1, 타입2> 이름: 이름.first, 이름.second, make_pair{1,2}
map <key, value> 이름: 이름.insert({1,2}), 이름.insert(make_pair(1,2))식으로 넣을수있음, key는 유일하고 key기준 자동정렬
ㄴ insert는 이미 있으면 못넣음, []으로 위치 지정해서 하는건 덮어씀 없으면 생성
<algorithm> 헤더: min_element(v.begin(), v.end()), min(a,b), find(v.begin(), v.end(), x), reverse(v.begin(), v.end())
<string> 헤더: s.length(); s.substr(1, 3); stoi("123"); to_string(456); isalpha(c); isdigit(c);


Week15 Exception handling
throw 예외타입: 에러 발생하면 던짐
try{}: 예외 발생할거같은데서 예외 있는지확인용
catch(){}: throw된 예외 받아서 해결


nested try: try문안에 try문 넣기
re-throw:


Matching Catch Handlers: throw된 타입보고 맞는 catch 이용
class object를 예외로 던질수도 있음 > std::exception 상속하면됨
Uncaught Exception: 모든 catch에 안걸림 > terminate() , abort() 쓰기
catch (...) {}: 마지막에 무조건 여기는 걸림
Cleaning up:


Stack unwinding: 예외발생시 적절한 catch찾아서 거슬러올라감, 자동으로 소멸자 호출
'공부 > 학교' 카테고리의 다른 글
| 인과입 중간 (0) | 2026.04.19 |
|---|---|
| 데사 중간 정리 (0) | 2026.04.16 |
| 데베응 기말 정리 (0) | 2025.11.28 |
| 창소프 중간 정리 (2) | 2025.10.27 |
| 지금까지 한거 정리 (0) | 2025.10.19 |
