3. ¿©·¯°¡Áö ¹®ÀÚ¿­°ü·Ã class

¹®ÀÚ¿­ class´Â ÇÁ·Î±×·¡¹Ö¿¡¼­ °¡Àå Áß¿äÇÑ °Íµé Áß ÇϳªÀ̰í, ¹®ÀÚ¿­ Á¶Á¤À» À§ÇØ ¸Å¿ì ¸¹ÀÌ ¾²ÀδÙ. ¹®ÀÚ¿­ class´Â ¿©·¯°¡Áö°¡ ÀÖ°í, ¹°·Ð À̵éÀ» »ó¼Ó¹ÞÀ½À¸·Î½á ÀڽŸ¸ÀÇ ¹®ÀÚ¿­ class¸¦ ¸¸µé ¼öµµ ÀÖ´Ù.

3.1. Multiple Inheritance - ÀڽŸ¸ÀÇ ¹®ÀÚ¿­ class ¸¸µé±â

À§¿¡ ¸»ÇÑ °Í °°ÀÌ, Çϳª ȤÀº ¿©·¯ class¸¦ »ó¼Ó¹Þ¾Æ ÀڽŸ¸ÀÇ ¹®ÀÚ¿­ class¸¦ ¸¸µé ¼öµµ ÀÖ´Ù. ¿©±â¼­´Â Ç¥ÁØ C++ ¶óÀ̺귯¸®ÀÇ string class¿Í ºÎ·Ï AÀÇ String class ¸¦ »ó¼Ó¹ÞÀ½À¸·Î½á ´ÙÁß»ó¼ÓÀ» ÀÌ¿ëÇÑ ¹®ÀÚ¿­ class¸¦ ¸¸µé¾î º¼ °ÍÀÌ´Ù.

¿ì¼± ¿¹Á¦ ÆÄÀÏ 'string_multi.h'¸¦ 23Àý ¿¡¼­ ´Ù¿î·Îµå ¹Þ¾Æ¶ó.

ÀÌ ÆÄÀÏÀº ´ÙÀ½°ú °°´Ù :

// ******************************************************************
// 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_