[C++] 템플릿 - 1 (함수템플릿, 구체화, 명시적 인수, 임의 타입 지원 조건) 함수템플릿 타입만 다른 함수 C++은 여러가지 개발 방식을 사용할 수 있다. C++은 C언어의 상위버전이므로 함수 위주의 구조적 기법을 쓸 수도 있고, 클래스를 활용한 객체 지향 기법도 쓸 수 있다. 이외에 임의 타입에 대해 동작하는 함수와 클래스를 작성하는 일반화 기법도 사용할 수 있다. C++ 표준 라이브러리인 STL이 일반화 기법으로 작성된 좋은 예시이다. 일반화는 템플릿에 의해 구현된다. 타입이 엄격한 C언어는 호환되지 않는 타입끼리 대입할 수 없어 비슷한 함수라도 타입별로 따로 만들어야하는 경우가 많다. 다음 예제는 두 변수의 값을 교환하는 swap 함수를 작성한다. #include void swap(int& a, int& b) { int t; t = a; a = b; b = t; } void .. 개발자과정준비/C++ 4년 전
[C++] 생성자, 소멸자(파괴자) 생성자 생성자는 객체를 초기화시키는 기능을 갖고 있다. 클래스의 인스턴스를 생성하면 객체 크기(멤버 변수의 크기)만큼 메모리가 할당된다. 할당만 될 뿐 아니라 일반 변수와 마찬가지로 초기화되지 않은 쓰레기값을 가진다. 이대로는 객체를 쓸 수 없으므로 선언 직후에 각 멤버에 원하는 값을 일일이 대입해야한다. Human kim; strcpy(kim.name, "홍길동"); kim.age = 29; 이는 가장 쉬운 초기화 방법이지만 멤버가 많으면 일일이 대입하기 까다롭다. 어자피 초기화해야한다면 선언과 동시에 하는것이 간편할 것이다. 클래스는 구조체의 확장이므로 { } 괄호안에 초기값을 순서대로 나열하면 된다. Human hong = {"홍길동", 30}; 간단하지만 이 방법은 클래스에 어울리지 않는다. 외부.. 개발자과정준비/C++ 4년 전