[C++] 범위기반 for문
·
개발/C++
범위기반 for 문 시작점과 끝점을 알려주지 않아도 알아서 처음부터 끝까지 순회를 하는 반복문 (C++ 11부터 사용 가능) 배열과 vector 등의 컨테이너의 원소를 순차적으로 접근 사용 예시 for(데이터 타입 name : 데이터 리스트) { loop statement } 데이터 타입 : 데이터 리스트에서 부터 하나씩 받아올 데이터의 타입 name : 변수 이름 데이터 리스트 : 배열, vector와 같은 순회가 가능한 데이터 리스트. vector vec {1, 2, 3, 4}; // for 문 for(int i = 0; i < vec.size(); i++) { int num = vec[i]; cout
[C++] 가상 함수 (다형성)
·
개발/C++
다형성의 문제점 부모 클래스 포인터 변수로 자식 클래스 객체의 주소를 받았을 때 포인터가 부모 클래스 타입이기 때문에, 부모 클래스의 기능만 접근이 가능하다. 해결 방안 가상 함수를 통해서 자식 클래스에서 오버라이딩 한 함수를 호출할 수 있게 한다. 가상 함수(Virtual)의 작동 원리 부모 클래스에 가상 함수(virtaul 함수)가 1개 이상 존재하면 각 클래스(부모, 자식)는 타입 정보가 만들어진다. 클래스에 대한 타입 정보는 메모리에 하나만 생성이 되고 이 타입 정보에는 해당 클래스가 보유하고 있는 가상 함수의 주소를 모아놓은 '가상 함수 테이블'이 있다. '가상 함수 테이블'에 virtual이 붙은 함수가 등록이 된다. 부모 클래스에 보이지 않는 멤버(가상 함수 테이블 포인터)가 추가된다. 가상..