프로그래밍언어/C++

[C++] 연산자 다중정의 (2)

qkzkdo 2023. 9. 15. 19:11
728x90

문자열 클래스

C에서 문자열은 char형 배열 또는 char형 포인터를 이용하여 표현한다. 또한 문자열을 처리하기 위한 다양한 함수를 사용할 수 있다. C++에서도 C와 동일한 방법으로 문자열을 사용할 수 있다.

 

MyString 클래스

C 스타일 문자열의 부족한 점을 보완

MyString 클래스의 연산자

연산자 기능
= 대입 및 이동 대입 연산자. C 스타일 문자열이나 MyString 객체를 복사 또는 이동한다.
+ 문자열 연결 연산자. 두 문자열을 연결한다.
+= 문자열을 뒤에 추가한다.
==, >, < 관계 연산자. 두 문자열의 등호 및 순서를 비교한다.
<< 스트림 출력 연산자. 출력 스트림으로 문자열을 출력한다.
[] 문자열 내의 개별 문자 접근

 

MyString 클래스의 데이터 멤버

데이터 멤버 용도
int len 문자열의 길이를 저장한다.
int bufSize 최대로 저장할 수 있는 문자열의 길이를 저장한다.
char *buf 문자열 저장공간

 

생성자 및 소멸자

MyString 클래스의 5개의 생성자

  • MyString(int s) : private으로 선언되어 클래스 내부 생성용으로만 사용할 수 있다.
  • MyString() : 비어 있는 문자열 객체를 생성
  • MyString(const char *str) : 인수로 전달된 C 스타일 문자열로 객체를 초기화한다.
  • MyString(const MyString &mstr) : 복사 생성자
  • MyString(MyString &&mstr) : 이동 생성자

 

length() 함수

문자열의 길이를 반환한다.

 

 

자료형의 변환

송신 측 믈래스에 정의하는 방법

값을 보내는 클래스에서 형 변환을 정의하는 방법은 수신 측 클래스의 이름으로 연산자를 정의하는 것이다.

 

수신 측 클래스에 정의하는 방법

값이 변환될 클래스에서 형 변환을 정의하는 것은 값을 제공하는 송신 측 클래스의 객체를 인수로 받는 1 인수 생성자를 정의하는 것이다.

 

생성자를 이용한 묵시적 형 변환의 금지

명시적 형 현환을 사용 => 'explicit'을 사용하면 된다.

 

 

 

 

출처 : 전중남·이병래. 「C++프로그래밍」. 한국방송통신대학교출판문화원. 2020

728x90