Point 객체의 값을 string으로

보물창고·2022년 5월 10일
0

멤버 데이터로 사용중일 경우

-> mutable을 사용해야 함.

#include <stdio.h>

#include <iostream>
using namespace std;

class Point
{
private : 
	int a_, b_;
	mutable char data[16];
	mutable bool bchange;
public : 
	Point(int _a, int _b) : a_(_a), b_(_b), bchange(false){}
	
	char* toString() const
	{
		if (!bchange)
		{
			bchange = true;
			sprintf(data, "%d, %d", a_, b_);
		}
		
		return data;
	}
};

int main()
{
	const Point p(1, 2);
	cout << p.toString() << endl;

}

변하는 것과 변경되지 않는 것을 분리하자.

-> 분리함.

#include <stdio.h>

#include <iostream>
using namespace std;

struct Data
{
	char name[16];
	bool bchange;
};

class Point
{
private : 
	int a_, b_;
	Data *data;
public : 
	Point(int _a, int _b) : a_(_a), b_(_b)
	{
		data = new Data;
		data->bchange = false;
	}
	
	char* toString() const
	{
		if (!data->bchange)
		{
			data->bchange = true;
			sprintf(data->name, "%d, %d", a_, b_);
		}
		
		return data->name;
	}
};

int main()
{
	const Point p(1, 2);
	cout << p.toString() << endl;

}

profile
🔥🔥🔥

0개의 댓글