본문 바로가기
c++ 기초

23) 클래스 배열

by BitsrimAcrux 2025. 1. 5.

Apples.h

#ifndef APPLES
#define APPLES
#include <iostream>

using namespace std;

class Apples {

private: // 클래스 내에서만 접근 가능
	string name; // 사과 농장
	int qty; // 사과 개수
	float price; // 사과 한 개 가격
	double total_pr;
	void set_total() { total_pr = qty * price; }

public: // 클래스 외부에서 접근 가능
	// public의 함수를 통해서만 private 값에 접근 가능 -> 데이터 은닉 : 데이터 직접 접근 막음
	void buy(int, float);
	void sell(int, float);
	void show();
	Apples com_pr(Apples&); //참조함수 사용 ver Apples& com_pr(Apples&);
	Apples(string, int, float);
	Apples(); // 힘수 오버로딩, 매개변수 없는 함수
	~Apples();
};
#endif

함수 c++ 파일

#include "Apples.h"

void Apples::buy(int n, float pr) { // 사과 구매
	qty += n;
	price = pr;
	set_total();
}
void Apples::sell(int n, float pr) { // 사과 판매
	qty -= n;
	price = pr;
	set_total();
}
void Apples::show() {
	cout << "사과 농장 : " << name << endl;
	cout << "사과 개수 : " << qty << endl;
	cout << "사과 한 개 가격 : " << price << endl;
	cout << "총 사과 가격 : " << total_pr << endl;
	cout << endl;
}

Apples Apples::com_pr(Apples& a) { // 참조함수 사용 ver Apples& Apples::com_pr(Apples& a)
	if (a.price > price) return a;
	else return *this; // this는 멤버 함수 price를 호출하는 데 사용된 객체
};

Apples::Apples(string fn, int n, float pr) { 
	name = fn;
	qty = n;
	price = pr;
	set_total();
}
Apples::Apples() { // 매개변수 없는 함수
	name = "";
	qty = 0;
	price = 0;
	set_total();
}
Apples::~Apples() {
	cout << name << " Class 소멸됨\n";
}

메인 c++ 파일

#include "Apples.h"

int main() {
	// 매개변수 없는 Apples 함수로 배열 생성 후 정한 값들 대입
	Apples s[4] = { Apples("farm A", 10, 100),
					Apples("farm B", 20, 200),
					Apples("farm C", 30, 300),
					Apples("farm D", 40, 400)
	};
	Apples max_pr = s[0];
	for (int i = 1; i < 4; i++) {
		max_pr = max_pr.com_pr(s[i]);
	};
    //참조 함수 사용 ver
    //Apples *max_pr = &s[0];
	//for (int i = 1; i < 4; i++) {
	//	max_pr = &max_pr->com_pr(s[i]); // max_pr 객체의 com_pr 메서드를 호출한 결과의 주소
	//};

	cout << "\n<가장 높은 사과 가격을 가진 객체>\n";
	max_pr.show();

	return 0;
}

<출력>

farm B Class 소멸됨
farm C Class 소멸됨
farm D Class 소멸됨

<가장 높은 사과 가격을 가진 객체>
사과 농장 : farm D
사과 개수 : 40
사과 한개 가격 : 400
총 사과 가격 : 16000

farm D Class 소멸됨
farm D Class 소멸됨
farm C Class 소멸됨
farm B Class 소멸됨
farm A Class 소멸됨

 

 

<참조 함수 사용 ver 출력>


<가장 높은 사과 가격을 가진 객체>
사과 농장 : farm D
사과 개수 : 40
사과 한개 가격 : 400
총 사과 가격 : 16000

farm D Class 소멸됨
farm C Class 소멸됨
farm B Class 소멸됨
farm A Class 소멸됨

728x90

'c++ 기초' 카테고리의 다른 글

25) 출력 연산자(<<) 오버로딩  (0) 2025.01.06
24) 연산자 오버로딩, friend  (0) 2025.01.05
22) this 포인터  (0) 2025.01.04
21) 생성자, 소멸자  (0) 2025.01.04
20) 클래스  (0) 2025.01.03