본문 바로가기
프로그래밍

[C++] 명품 c++ 프로그래밍 실습 3장 12번

by 엽기토기 2020. 12. 23.
반응형

컴퓨터 주기억장치를 모델링하는 클래스 Ram을 구현하려고 한다. Ram 클래스는 데이터가 기록될 메모리 공간과 크기 정보를 가지고, 주어진 주소에 데이터를 기록하고(write), 주어진 주소로부터 데이터를 읽어 온다(read). Ram 클래스는 다음과 같이 선언된다...
실행결과를 참고하여 헤더파일과 cpp파일을 분리하여 프로그램을 완성하라.

10번 다음 과제였습니다 ! 하면서 생성자와 소멸자에 대해 어느정도 이해하는 시간이 되었습니다.
-------------------------------------------------------------------------------------------------------------------

<Ram.h>

class Ram
{
	char mem[100 * 1024]; //100KB 메모리. 한 번지는 한 바이트이므로 char 타입 사용
	int size;
public:
	Ram();  //생성자
	~Ram(); //소멸자 
	char read(int address); 
	void write(int address, char value);  //address에 value 저장할거임.
};

//클래스 선언 부

 

<Ram.cpp>

#include <iostream>
#include "Ram.h"
using namespace std;

Ram::Ram() 
{
	mem[100*1024] = { 0 }; //mem배열을 0으로 초기화
	size = 100 * 1024; //size를 100*1024로 초기화
}
Ram::~Ram() 
{
	cout << "메모리 제거됨" << endl;//"메모리 제거됨" 문자열 출력
}
char Ram::read(int address) 
{
	return mem[address]; //address 주소의 메모리 바이트 리턴 (~번지)
}
void Ram::write(int address, char value) 
{
	mem[address] = value; //address 주소에 한 바이트로 value 저장 (~번지에 value저장)
} //클래스 구현 부

 

<main.cpp>

#include <iostream>
#include "Ram.h"
using namespace std;

int main()
{
	Ram ram;//객체 생성
	ram.write(100, 20); //100번지에 20 저장
	ram.write(101, 30); //101번지에 30 저장
	char res = ram.read(100) + ram.read(101);// 20 + 30 =50
	ram.write(102, res); //102번지에 50 저장
	cout << "102번지의 값 = " << (int)ram.read(102) << endl; //102번지 값 출력
}

 

<실행화면>

반응형