사자자리

[C++] this 포인터와 클래스 객체 배열 본문

C++/C++ 이론

[C++] this 포인터와 클래스 객체 배열

renne 2022. 8. 17. 23:38

this 포인터

 - 객체 자신을 가리키는 포인터

 - 멤버 함수 내에서 사용할 수 있다.

 

클래스 객체 배열

 - 디폴트 생성자가 정의되어 있어야 한다.

 

//Stock.h
#ifndef STOCK
#define STOCK
#include <iostream>
using namespace std;

class Stock
{
private:
	string name;
	int shares;
	float share_val;
	double total_val;
	void set_total() { total_val = shares * share_val; }

public:
	Stock();
	Stock(string, int, float);
	void buy(int, float);
	void sell(int, float);
	void update(float);
	Stock& topval(Stock&);
	void show();
	~Stock();
};
#endif // !STOCK
//func.cpp
#include "Stock.h"

void Stock::buy(int n, float pr) {
	shares += n;
	share_val = pr;
	set_total();
}
void Stock::sell(int n, float pr) {
	shares -= n;
	share_val = pr;
	set_total();
}
void Stock::update(float pr) {
	share_val = pr;
	set_total();
}
void Stock::show() {
	cout << "회사 명 : " << name << endl;
	cout << "주식 수 : " << shares << endl;
	cout << "주가 : " << share_val << endl;
	cout << "주식 총 가치 : " << total_val << endl;
}
Stock& Stock::topval(Stock& s) {
	if (s.share_val > share_val)
		return s;
	else return *this;
}

Stock::Stock(string co, int n, float pr)
{
	name = co;
	shares = n;
	share_val = pr;
	set_total();
}

Stock::Stock() {
	name = "";
	shares = 0;
	share_val = 0;
	set_total();
}

Stock::~Stock()
{

}
//main.cpp
#include <iostream>
#include "Stock.h"

int main() {
	Stock s[4] = {
		Stock("A", 10, 1000),
		Stock("B", 20, 1200),
		Stock("C", 20, 1300),
		Stock("D", 20, 1400)
	};

	Stock* first = &s[0];
	for (int i = 1; i < 4; i++)
		first = &first->topval(s[i]);

	first->show();

	return 0;
}

'C++ > C++ 이론' 카테고리의 다른 글

[C++] 프렌드(friend)  (0) 2022.08.24
[C++] 연산자 오버로딩  (0) 2022.08.24
[C++] 클래스 생성자와 소멸자  (0) 2022.08.17
[C++] 추상화와 클래스  (0) 2022.08.17
[C++] 분할 컴파일: #ifndef & #endif  (0) 2022.08.17
Comments