이들 중 맘에 드는 것이 없다면, 자신만의 문자열 클래스를 만들 수도 있다.
위에 언급된 하나 혹은 여러 class를 상속받아 만들 수도 있다.
3.1. Multiple Inheritance - 자신만의 문자열 class 만들기
위에 말한 것 같이, 하나 혹은 여러 class를 상속받아 자신만의 문자열 class를
만들 수도 있다. 여기서는 표준 C++ 라이브러리의 string class와 부록 A의
String class 를 상속받음으로써 다중상속을 이용한 문자열 class를 만들어 볼
것이다.
// ******************************************************************
// String class와 표준 라이브러리의 "string" class를 상속받음으로써
// 직접 문자열 class를 만들어보는 예시를 위한 프로그램
// ******************************************************************
#ifndef __STRING_MULTI_H_ALDEV_
#define __STRING_MULTI_H_ALDEV_
#include <string>
#include "String.h"
#include "StringBuffer.h"
#ifdef NOT_MSWINDOWS
#else
using namespace std; // MS Visual C++ compiler Version 6.0 에서 필요함.
#endif
// 중요! : C++에서는 생성자, 파괴자, 복사 연산자가 같이 상속되지 않는다.
// 따라서 만약 =, + 등의 연산자가 base class에 정의되어 있고, base
// class의 생성자를 이용한다면, 반드시 같은 역할을 하는 생성자를
// 상속받는 class에도 만들어주어야 한다.
// 아래에 주어진 mystring(), mystring(char [])를 보아라.
//
// 또한 atmpstr이 mystring으로 선언되었다고 할 때, atmpstr + mstr
// 과 같이 연산자를 쓸 때, 실제로 불리는 것은 atmpstr.operator+(mstr)이다.
class mystring:public String, string
{
public:
mystring():String() {} // =, + 연산자를 위해 필요하다
mystring(char bb[]):String(bb) {} // =, + 연산자를 위해 필요하다
mystring(char bb[], int start, int slength):String(bb, start, slength) {}
mystring(int bb):String(bb) {} // + 연산자를 위해 필요하다
mystring(unsigned long bb):String(bb) {} // + 연산자를 위해 필요하다
mystring(long bb):String(bb) {} // + 연산자를 위해 필요하다
mystring(float bb):String(bb) {} // + 연산자를 위해 필요하다
mystring(double bb):String(bb) {} // + 연산자를 위해 필요하다
mystring(const String & rhs):String(rhs) {} // + 연산자를 위해 필요한 Copy Constructor
mystring(StringBuffer sb):String(sb) {} // Java와의 호환을 위해
mystring(int bb, bool dummy):String(bb, dummy) {} // StringBuffer class를 위해
int mystraa; // mystring의 최적화
private:
int mystrbb; // mystring의 최적화
};
#endif // __STRING_MULTI_H_ALDEV_
3. 여러가지 문자열관련 class
문자열 class는 프로그래밍에서 가장 중요한 것들 중 하나이고, 문자열 조정을 위해 매우 많이 쓰인다. 문자열 class는 여러가지가 있고, 물론 이들을 상속받음으로써 자신만의 문자열 class를 만들 수도 있다.
이 문서에 쓰여진 문자열 클래스는 23절를 보아라.
표준 C++ 라이브러리 string class (ANSI/ISO string class http://www.msoe.edu/eecs/cese/resources/stl/string.htm 와 http://www.sgi.com/tech/stl/basic_string.html
Qt의 외부 라이브러리에 있는 Qt String class http://doc.trolltech.com/qstring.html , mirror : http://www.cs.berkeley.edu/~dmartin/qt/qstring.html
이들 중 맘에 드는 것이 없다면, 자신만의 문자열 클래스를 만들 수도 있다. 위에 언급된 하나 혹은 여러 class를 상속받아 만들 수도 있다.
3.1. Multiple Inheritance - 자신만의 문자열 class 만들기
위에 말한 것 같이, 하나 혹은 여러 class를 상속받아 자신만의 문자열 class를 만들 수도 있다. 여기서는 표준 C++ 라이브러리의 string class와 부록 A의 String class 를 상속받음으로써 다중상속을 이용한 문자열 class를 만들어 볼 것이다.
우선 예제 파일 'string_multi.h'를 23절 에서 다운로드 받아라.
이 파일은 다음과 같다 :
Recent Posts
Archive Posts
Tags