함수의 원형:classname(param1,param2...)로 선언
함수의 정의:classname :: classname(param1,param2){}로 정의
함수의 호출:classname temp(arg1,arg2...);로 객체 생성
또는 classname temp = classname(arg1,arg2...)로 생성가능
---
#include <iostream>
using namespace std;
//주식 프래그램을 class를 사용해서 구현하시오.
class Stock
{
private: //public을 통해서만 데이터 접근가능& 구조체처럼 데이터형들을 선언하면됨
//주식 이름, 주식 수, 주가, 주식의 총가지
string name;
int shares;
float share_val;
double total_val;
void set_total() { total_val = shares * share_val; }
public://주식을 선언,사고,팔고,주식의 총 가격을 업데이트,show해주는 함수
void buy(int, float);
void sell(int, float);
void update(float);
void show();
Stock(string, int, float);
Stock();
~Stock();
};
## 함수의 호출
```cpp
#include "stock.h"
int main()
{
cout << "생성자를 이용해 객체 생성\n";
Stock temp("Panda", 100, 1000);
//Stock temp = Stock("Panda", 100, 1000);
cout << "디폴트 생성자를 이용하여 객체 생성\n";
Stock temp2;
cout << "temp를 temp2에 대입\n";
temp2 = temp;
cout << "temp와 temp2 출력\n";
temp.show();
temp2.show();
cout << "생성자를 이용하여 temp 내용 재설정\n";
temp = Stock("coding", 200, 1000);
//panda->coding으로 바뀌면서 클래스가 소멸
cout << "재설정된 temp 출력\n";
temp.show();
//프로그램이 종료되면서 생성된 panda, coding클래스가 소멸
return 0;
}
#include "stock.h"
//:: 사용 범위 결정 연산자를 사용하여 public 함수들을 Stock에 귀속시키자
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;
cout << "변경!" << endl;
}
//생성자를 이용해 객체 생성
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();
}
//파괴자(class를 생성하면 자동으로 파괴)
Stock ::~Stock() {
cout << name << "클래스가 소멸되었습니다. \n";
}