#include <iostream>
using std::cout;
using std::endl;
using std::cin;
// ******* class 선언******
class T
{
public:
T();
T(int a);
T(int a, double b, char c);
T(char c);
T(char *p);
T(int a, int b, char *p);
};
// ******* class 멤버함수 외부 정의******
T::T()
{
cout<<"생성자"<<endl;
}
T::T(int a)
{
cout<<a<<"생성자"<<endl;
}
T::T(int a, double b, char c)
{
cout<<a<<' '<<b<<' '<<c<<"생성자"<<endl;
}
T::T(char c)
{
cout<<c<<"생성자"<<endl;
}
T::T(char *p)
{
cout<<p<<"생성자"<<endl;
}
T::T(int a, int b, char *p)
{
cout<<a<<' ' <<b<<' '<<p<<"생성자"<<endl;
}
int main()
{
T ob, ob2, ob3; //객체 생성
T ob4(100); //객체 생성 시 인수전달
T ob5(10, 20.34, 'B');
T ob6('a');
T ob7;
T ob8("Hello");
T ob9(50, 60, "Happy Birthday");
return 0;
}
/***********************************
ACC클래스를 다음과 같이 수정해보자.
- 멤버 변수를 private으로 변경한 후,
생성자를 추가하여 변수를 초기화 하여라.
************************************/
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
class ACC
{
private:
int accId; //계좌번호
char pw[5]; //비밀번호
char name[20]; //이름
int bal; //잔액
public:
ACC(int ac, char *pW, char *pN ,int money);
void deposit(); //입금
void withdraw(); //출금
void showData(); //잔액조회
};
///////////////////////////////////////////main
int main()
{
//ACC ac = {1111, "1234", "김수현", 5000}; //객체 생성 후, 초기화
ACC ac(1111, "1234", "김수현", 5000); //객체 생성 후, 초기화
ac.showData(); //잔액조회
ac.deposit(); //입금
ac.withdraw(); //출금
ac.showData(); //잔액조회
return 0;
}
///////////////////////////////////////////ACC 멤버함수 외부정의
ACC::ACC(int ac, char *pW, char *pN ,int money)
{
accId =ac;
strcpy(pw,pW);
strcpy(name,pN);
bal=money;
cout<<"생성자"<<endl;
}
void ACC::deposit()
{
int m;
cout << "\n입금금액 입력 : ";
cin >> m;
bal += m;
cout << "\t\t" << m << "원 입금완료~!!\n";
}
void ACC::withdraw()
{
int m;
cout << "\n출금금액 입력 : ";
cin >> m;
bal -= m;
cout << "\t\t" << m << "원 출금완료~!!\n";
}
void ACC::showData()
{
cout << "\n계좌번호 : " << accId << endl;
cout << name << "회원님의 잔액은 " << bal << "입니다.\n";
}
-------------------------------------------------------------------------
********************** Triangle.h
//헤더의 중복을 방지하기 위한 구문
//만약에 _TRIANGLE_H_가 정의 되지 않았다면 #endif까지 수행 아니라면 #endif로 점프
#ifndef _TRIANGLE_H_
// 정의 _TRIANGLE_H_
#define _TRIANGLE_H_
class Triangle
{
private:
int b,h;
public:
Triangle(int _b, int _h);
double GetArea();
};
#endif
******************** Triangle.cpp
#include<iostream>
#include"Triangle.h"
using std::endl;
using std::cout;
//Triangle::Triangle(int _b, int _h)
//생성자에서만 가능한 초기화 방법 -> 콜론(:)을 이용한 초기화
Triangle::Triangle(int _b, int _h):b(_b),h(_h)
{
/*
b=_b;
h=_h;
*/
cout<<"생성자"<<endl;
}
double Triangle::GetArea()
{
return (b+h)/2.0;
}
**************************** main.cpp
#include <iostream>
#include"Triangle.h"
using std::cout;
using std::cin;
using std::endl;
/*
아래와 같은 Triangle클래스를 디자인해보자.
1. Triangle클래스 디자인
▶ private 멤버변수
밑변, 높이
▶ public 멤버함수
생성자 - 멤버변수 초기화
GetArea - 삼각형 넓이 리턴
2. 파일분할하여 프로그램을 작성해보자.
*/
int main()
{
int base, height;
cout << "\n *** 삼각형 넓이 구하기 ***\n\n";
cout << "밑변 : ";
cin >> base;
cout << "높이 : ";
cin >> height;
Triangle tri(base, height); //객체 생성 시 인수 전달
//삼각형 넓이 리턴
cout << "삼각형의 넓이는 " << tri.GetArea() << "입니다.\n";
return 0;
}