본문 바로가기

C++

Chapter 6. C++의 또 다른 기능

Chapter 6. C++의 또 다른 기능
1. Template
 - 사전적 뜻으로 무엇인가를 만들기 위한 형틀을 말하는데 C++에서는 객체를 만드는 틀로 사용할 수 있다.
 - 실제로 템플릿(Template)은 문제가 많아 잘 사용되지 않는다.
 - 함수 템플릿(Function Template)

  ‧ 함수 템플릿(Function Template)는 주로 내용은 동일하고 데이터형만 다른 함수를 정의할 때 사용한다.
  ‧ 정의 방법
  ◦ template 선언 후 꺽쇠기호(<>)안에 typename 선언하고 template 이름을 써준다.
  ◦ 그리고 함수를 선언하는데 함수의 데이터형과 매개변수의 데이터형만 template 이름으로 선언하고 이하는 함수의 용도에 맞게 정의한다.
  ‧ 함수 템플릿(Function Template)은 함수를 만들기 위한 형틀일 뿐 실제 함수가 아니며 함수 템플릿(Function Template)을 호출하면 함수로 전달되는 매개변수의 데이터형을 보고 매개변수로 전달되는 데이터형으로 변경된 함수를 생성한다.
  ‧ 템플릿(Template)은 둘 이상의 타입으로 선언이 가능하며 typename 대신 class를 사용가능하다.
  ‧ 함수 템플릿(Function Template)의 특수화(Specialization)
  ◦ 함수의 동작은 동일하지만 특정 타입에 대해서만 다르게 동작하고 싶은 경우 사용한다.
 - 클래스 템플릿(Class Template)

  ‧ 클래스 템플릿(Class Template)는 내용을 동일하고 데이터형만 다른 Class를 정의할 때 사용한다.
  ‧ 정의 방법
  ◦ template 선언 후 꺽쇠기호(<>)안에 typename 선언하고 template 이름을 써준다.
  ◦ 그리고 Class를 선언하는데 멤버변수의 데이터형을 template 이름으로 선언하고 이하는 Class의 용도에 맞게 정의한다.

 

2. String Class
 - C언어에서 C++로 발전하면서 문자보다는 문자열이 많이 쓰이게 되어 C++의 표준라이브러리에 string이라는 이름의 문자열 Class가 정의되었다.
 - string Class는 간편하게 쓰기위해 +연산자를 사용하게 만든다든지 여러 가지 기능을 추가해 정의 되어 사용자에게 문자열을 간편하게 사용할 수 있게 해준다.
 - string은 string 헤더 파일에 포함되어 있으며 사용할 때는 #include<string>만 선언해주면 사용할 수 있다.
 - 또한 string 헤더 파일에는 여러 가지 함수가 포함되어 있어 목적과 방법만 익힌다면 문자 배열보다는 손쉽게 사용할 수 있다.
 - string Class의 기본적인 요구 사항
  ‧ 문자열을 인자로 전달받는 생성자 필요
  ‧ 생성자, 소멸자, 복사생성자 정의
  ‧ 대입 연산자(=), 결합 연산자(+,+=), 비교 연산자(==) 등등의 연산자 오버로딩(Overloading)