사자자리
[C++] this 포인터와 클래스 객체 배열 본문
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