8.7> 아래와 같은 BaseMemory 클래스를 상속받는 ROM(Read Only Memory), RAM 클래스를 작성하라. BaseMemory에 필요한 코드를 수정 추가하여 적절히 완성하라.
<코드>
#include <iostream>
using namespace std;
class BaseMemory { //베이스메모리 클래스 private: char *mem; //캐릭터 동적 배열을 가리킬 포인터 mem protected: BaseMemory(int size) { mem = new char[size]; } //생성자 mem에 size만큼의 캐릭터 동적 배열 할당 void burn(int index, char value); public: char read(int index);
}; class ROM : public BaseMemory { //베이스메모리를 상속받은 롬 클래스 public: ROM(int memsize, char *arr, int arrsize); };
class RAM : public BaseMemory { //베이스메모리를 상속받은 램 클래스 public: RAM(int memsize); void write(int i, char value); };
void BaseMemory::burn(int index, char value) { mem[index] = value; } //mem 배열의 해당 index에 value 삽입
char BaseMemory::read(int index) { return mem[index]; } //mem 배열의 해당 index 원소 리턴
ROM::ROM(int memsize, char *arr, int arrsize) : BaseMemory(memsize) { //롬 생성자, 베이스 메모리 생성자 실행하고 for (int i = 0; i < arrsize; i++) { burn(i, arr[i]); } //arr이 가리키는 배열의 원소 ROM에 굽는다. } RAM::RAM(int memsize) : BaseMemory(memsize) {} //단순히 memsize의 캐릭터 동적 배열만 할당한다.(베이스메모리 컨스트럭터와 동일)
void RAM::write(int i, char value) { burn(i, value); } //램에 존재하는 캐릭터 배열 인덱스 i에 value값을 삽입한다.
int main(void) { char x[5] = { 'h','e','l','l','o' }; //캐릭터배열 크기 5 ROM biosROM(1024 * 10, x, 5); //10KB의 ROM 메모리, 배열 x로 초기화됨. RAM mainMemory(1024 * 1024); //1MB의 RAM 메모리
//0번지에서 4번지까지 biosROM에서 읽어 mainMemory에 복사 for (int i = 0; i < 5; i++) { mainMemory.write(i, biosROM.read(i)); } //램 메인메모리에 있는 캐릭터 배열의 i인덱스에 롬 바이오스롬에 들어있는 캐릭터 배열의 i인덱스 원소를 삽입한다. for (int i = 0; i < 5; i++) { cout << mainMemory.read(i); } //메인메모리에 있는 캐릭터배열 0~4인덱스 원소를 순회하고 출력한다.
return 0; } |
<결과창>
|
'컴퓨터 & 프로그래밍 & 전자공학 > C++' 카테고리의 다른 글
WonToDollar Class (0) | 2017.12.31 |
---|---|
Printer Class (0) | 2017.12.31 |
MyStack Class (0) | 2017.12.31 |
MyQueue Class (0) | 2017.12.31 |
Stack class (0) | 2017.12.25 |