C++ 공부하다가 궁금한거 생김
====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:
void buy(int, float);
void sell(int, float);
void update(float);
void show();
Stock compare(Stock&);
Stock(string, int, float);
Stock();
~Stock();
};
#endif
=================
====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 << "===============" << endl;
cout << "Company: " << name << endl;
cout << "Share: " << shares << endl;
cout << "Price: " << share_val << endl;
cout << "Total price: " << total_val << endl;
}
Stock Stock::compare(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() {
cout << "===============" << endl;
cout << name << "class annihilated" << endl;
}
================
====main.cpp====
#include <iostream>
#include "stock.h"
#include "func.cpp"
int main() {
Stock temp = Stock("dc", 100, 1000);
temp.show();
temp.buy(10, 1200);
temp.show();
temp.sell(5, 800);
temp.show();
Stock higher = Stock();
Stock temp2("arca", 90, 1000);
higher = temp.compare(temp2);
cout << "===============" << endl;
cout << "Higher price stock" << endl;
higher.show();
return 0;
}
================
파일은 이렇게 main.cpp, func.cpp, stock.h 세개임
클래스 연습용으로 만든건데 Stock 클래스에 회사 이름(여기선 dc, arca), 가격, 개수, 총 가격(개수*가격)을 저장하는 클래스임
메서드는 buy는 판매, sell은 구매, update는 주식 가격 바뀌면 업뎃, show는 주식 정보 보여주기, compare는 클래스 두개 비교해서 가격 비싼 Stock 클래스 출력하는건데 위에서 main.cpp를 실행하면 이렇게 나옴
===============
Company: dc
Share: 100
Price: 1000
Total price: 100000
===============
Company: dc
Share: 110
Price: 1200
Total price: 132000
===============
Company: dc
Share: 105
Price: 800
Total price: 84000
===============
arcaclass annihilated
===============
Higher price stock
===============
Company: arca
Share: 90
Price: 1000
Total price: 90000
===============
arcaclass annihilated
===============
arcaclass annihilated
===============
dcclass annihilated
클래스 소멸이 언제하나 궁금해서 ~Stock에 안내문 출력하는 기능 달았는데 위에 굵게 처리한곳에서 arca 가 소멸하더라고.
클래스 소멸은 프로그램 끝나거나 클래스 재설정할때 소멸하는걸로 알고있음. 그래서 마지막에 클래스 세개(temp, temp2, higher) 소멸하고. 그런데 저 줄은 compare메소드 작동하는건데 왜 소멸하는지 궁금함