본문 바로가기

Programing/C++

(27)
[C++] 클래스 템플릿 *C++ 열혈 프로그래밍 참조 (윤성우 저) 1) 클래스 템플릿 앞서 함수를 템플릿으로 정의 했듯이 클래스도 템플릿으로 정의가 가능하다. 그리고 이렇게 정의된 템플릿을 가리켜 '클래스 템플릿'이라 하며, 이를 기반으로 컴파일러가 만들어내는 클래스를 가리켜 '템플릿 클래스' 라고 한다. 클래스 템플릿의 장점은 제공되는 기능과 내부의 행동이 모두 동일한데, 저장의 대상이 다르다는 이유로 클래스를 여러개 정의하는 것을 1개로 정의하게 모두 구현 하게 할수 있다. 예제를 들어보겠다. #include using namespace std; template class Point { private: T xpos, ypos; public: Point( T x= 0, T y = 0) : xpos(x), ypos(y) { ..
[C++] 템플릿(Template) - 2 *C++ 열혈 프로그래밍 참조 (윤성우 저) 템플릿의 함수의 특수화를 다뤄 보겠다. 먼저 예제부터 들겠다. #include using namespace std; template T Max(T a, T b) { return a > b ? a : b; } int main() { cout
[C++] 가상 함수(상속) 오늘은 상속 중에서도 가상 함수에 대해서 공부를 하였다. 바로 예제로 넘어가자 #include using namespace std; class Base { public: void func() { cout
[C++] 템플릿(Template) - 1 *C++ 열혈 프로그래밍 참조 (윤성우 저) 템플릿(Template)에 대한 이해와 함수 템플릿 - 템플릿 : 모형자 라는 뜻이 담겨 있음. - 1) 모형자(템플릿) 특징 : 모형을 만들어낸다. 모형의 틀언 결정되어 있지만, 모형의 색은 결정해야 된다. - 2) 함수 템플릿 : 함수를 만들어 낸다. 함수의 기능은 결정 되어 있지만 자료형은 결정되어 있지 않아서 결정 해야된다. 즉 함수 템플릿은 함수를 만드는 도구가 된다. 예제를 통해서 같이 확인해 보자 #include using namespace std; // 함수 템플릿 정의 template // type name을 대신해서 class를 사용할수도 있다. T Add(T num1, T num2) { return num1 + num2; } int main..
[C++] 코딩 테스트 개 문제 풀이 오늘은 개 문제를 풀어 봤다! #include using namespace std; int main(void) { cout
[C++] 코딩테스트 준비(백준, 고양이문제) 금년 상,하반기 이직을 위한 공부를 시작했다. 코딩테스트를 준비하기 위해 백준(www.acmicpc.net) 에서 문제풀이그리고 프로그래밍(C++, 자료구조등)을 공부하기 시작했다. 오늘은 코딩 문제 중 고양이문제(10171번) 문제를 풀어 보았다. 어려운건 아니고 그냥 예제 출력과 똑같이 흉내내면 된다. #include using namespace std; int main(void) { cout
[C++] Call by reference & Call by Value #출저 : 열혈 C++프로그래밍(책) Call by reference, Call by Value의 의미를 먼저 살펴보면, Call by value : 값으로 인자를 전달하는 함수의 호출 방식 Call by reference : 주소값을 인자로 전달하는 함수의 호출 방식 Call by value 기반으로 Swap 함수를 구현해보면, void SwapByValue(int num1, int num2) { int temp = num1; num1 = num2; num2 = temp; } int main() { int val1 = 10; int val2 = 20; SwapByValue(val1, val2); cout
[C++]참조자(Reference) 정의 #출저 : 열혈 C++프로그래밍(책) 변수는 할당된 공간에 붙여진 이름이다. 그리고 그 이름을 통해서 해당 메모리 공간에 접근이 가능하다. 여기서, 할당된 하나의 공간에 둘 이상의 이름을 부여하는 경우를 참조(Reference)한다 라고 말한다. int num1 = 2010; 이렇게 변수를 선언 하면 메모리 공간 상에서는, 아래 처럼 된다. 여기에서 int &num2 = num1; 를 실행하면 num1이라는 이름이 붙어 있는 메모리 공간에는 num2라는 이름이 하나 더 붙게 된다. *포인터와 헷갈리면 안된다. 포인터 의미와 구분 짓자면, int *ptr = &num1 // 변수 num1의 주소 값을 반환해서 포인터 ptr에 저장해라. int &num2 = num1 // 변수 num1에 대한 참조자 num..