목차
2. 프로그래밍 paradigm의 변화
2.1 OOP paradigm
1) 절차 지향적인 기법
2) 객체지향적인 기법:
2.2 객체의 끊임없는 진화
3. 복합형의 종류와 객체의 개념
3.1 복합 자료형의 선언/정의
3.1.1 공용체(union)의 선언/정의
3.2 객체와 this의 필요성 및 그 응용
3.2.3 멤버변수와 this의 이용
1) 구조체에서 this를 사용한 경우
2) 공용체에서 this를 사용한 경우
3.3 객체의 메모리맵과 멤버변수의 다른 접근
3.4 복합 자료형의 선언/정의의 위치
3.4.1 복합 자료형의 형식
2.1 OOP paradigm
1) 절차 지향적인 기법
2) 객체지향적인 기법:
2.2 객체의 끊임없는 진화
3. 복합형의 종류와 객체의 개념
3.1 복합 자료형의 선언/정의
3.1.1 공용체(union)의 선언/정의
3.2 객체와 this의 필요성 및 그 응용
3.2.3 멤버변수와 this의 이용
1) 구조체에서 this를 사용한 경우
2) 공용체에서 this를 사용한 경우
3.3 객체의 메모리맵과 멤버변수의 다른 접근
3.4 복합 자료형의 선언/정의의 위치
3.4.1 복합 자료형의 형식
본문내용
Min, Max;
void Comp();
public:
void input(int, int);
int outMax();
int outMin();
};
void main(){
MinMax Ob;
Ob.input();
Ob.outMax();
Ob.outMin();
}
< 객제지향적인 기법 수정 실행되도록 수정 >
#include
using namespace std;
int num1, num2;
class MinMax{
private:
int Max, Min;
void Comp(int, int);
public:
void Input(int, int);
int outMax();
int outMin();
};
void main()
{
MinMax Ob;
Ob.Input(num1, num2);
Ob.outMax();
Ob.outMin();
}
void MinMax::Input(int a, int b)
{
cout << "비교하고자 하는 숫자를 입력하세요!!!\n";
cout << "첫번째 숫자를 입력하세요: ";
cin >> a;
cout << "두번째 숫자를 입력하세요: ";
cin >> b;
cout << "\n";
Comp(a, b);
}
void MinMax::Comp(int a, int b)
{
int imsi;
if(a {
imsi = a;
a = b;
b = imsi;
}
Max = a;
Min = b;
}
int MinMax::outMax()
{
cout << "큰 수는 :" << Max << "\n";
return 0;
}
int MinMax::outMin()
{
cout << "작은 수는 :" << Min << "\n";
return 0;
}
< 실행화면 >
2.2 객체의 끊임없는 진화
#include
using namespace std;
//단순형
void main(){
int k(5);
float f=5.5;
cout << k << " " << f << endl;
}
< 실행화면 >
//복합형
struct Float{
private:
float f;
public:
Float(float k):f(k){}
operator float (){
return f;
}
};
void main(){
int k(5.0); float f=5.5;
cout << k << " " << f << endl;
}
< 실행화면 >
3. 복합형의 종류와 객체의 개념
3.1 복합 자료형의 선언/정의
3.1.1 공용체(union)의 선언/정의
#include
using namespace std;
union Tag_Name{
Access Specifier:Data_Type1 Var_Name11, Var_Name12;
Access Specifler:Ref_Type Func_Name(Parm List){ /* Body */ }
};
다음에 키워드 [union]을 사용하여 구체적으로 사용된 예를 보인다.
#include
using namespace std;
union anyType{
public:
void put_m(int k){m=k;}
void put_st(char *st);
char *get_st(){return c;}
int get_m(){return m;}
private:
int m;
char c[2];
};
void anyType::put_st(char *st){strcpy(c, st);}
void main(){
anyType ob;
char *s="a";
ob.put_m(3);
ob.put_st(s);
cout << ob.get_st() << ob.get_m() << endl;
}
< 실행화면 >
3.2 객체와 this의 필요성 및 그 응용
3.2.3 멤버변수와 this의 이용
1) 구조체에서 this를 사용한 경우
#include
using namespace std;
struct bank { int money;
operator int() { return this->money;} // 이는 {return money;}와 같다.
};
void main() {
bank a, b; a.money=10; b.money=20; // 내부적으로 this가 포함된다.
cout << a + b << endl;
}
< 실행화면 >
2) 공용체에서 this를 사용한 경우
#include
using namespace std;
union bank {
int money;
operator int() { return this->money;}
};
void main() {
bank a, b; a.money=10; b.money=20; // 내부적으로 this가 포함된다.
cout << a + b << endl;
}
< 실행화면 >
3.3 객체의 메모리맵과 멤버변수의 다른 접근
#include
using namespace std;
struct bank { int money;
bank *p_ret() {return this;}
};
void main() {
bank a;a.money = 10;
cout << a.money << " " << *(int *)(&a +0) << endl;
cout << a.p_ret << " " << (int *)(&a +0) << endl;
}
< 실행화면 >
3.4 복합 자료형의 선언/정의의 위치
3.4.1 복합 자료형의 형식
#include
using namespace std;
void goo() { struct LoT{}; LoT y;} // LoT 구조체형 객체 선언/정의
struct OutT {
public: void goo(char e);
struc InnT {
public: void goo(char e);
private: char c;
};
private: char c;
};
void OutT::goo(char e) {::c = c = e;}
void OutT::InnT::goo(char e) {::c = c = e;}
void main() { OutT x_ob; OutT::InnT xy_ob; }
void Comp();
public:
void input(int, int);
int outMax();
int outMin();
};
void main(){
MinMax Ob;
Ob.input();
Ob.outMax();
Ob.outMin();
}
< 객제지향적인 기법 수정 실행되도록 수정 >
#include
using namespace std;
int num1, num2;
class MinMax{
private:
int Max, Min;
void Comp(int, int);
public:
void Input(int, int);
int outMax();
int outMin();
};
void main()
{
MinMax Ob;
Ob.Input(num1, num2);
Ob.outMax();
Ob.outMin();
}
void MinMax::Input(int a, int b)
{
cout << "비교하고자 하는 숫자를 입력하세요!!!\n";
cout << "첫번째 숫자를 입력하세요: ";
cin >> a;
cout << "두번째 숫자를 입력하세요: ";
cin >> b;
cout << "\n";
Comp(a, b);
}
void MinMax::Comp(int a, int b)
{
int imsi;
if(a {
imsi = a;
a = b;
b = imsi;
}
Max = a;
Min = b;
}
int MinMax::outMax()
{
cout << "큰 수는 :" << Max << "\n";
return 0;
}
int MinMax::outMin()
{
cout << "작은 수는 :" << Min << "\n";
return 0;
}
< 실행화면 >
2.2 객체의 끊임없는 진화
#include
using namespace std;
//단순형
void main(){
int k(5);
float f=5.5;
cout << k << " " << f << endl;
}
< 실행화면 >
//복합형
struct Float{
private:
float f;
public:
Float(float k):f(k){}
operator float (){
return f;
}
};
void main(){
int k(5.0); float f=5.5;
cout << k << " " << f << endl;
}
< 실행화면 >
3. 복합형의 종류와 객체의 개념
3.1 복합 자료형의 선언/정의
3.1.1 공용체(union)의 선언/정의
#include
using namespace std;
union Tag_Name{
Access Specifier:Data_Type1 Var_Name11, Var_Name12;
Access Specifler:Ref_Type Func_Name(Parm List){ /* Body */ }
};
다음에 키워드 [union]을 사용하여 구체적으로 사용된 예를 보인다.
#include
using namespace std;
union anyType{
public:
void put_m(int k){m=k;}
void put_st(char *st);
char *get_st(){return c;}
int get_m(){return m;}
private:
int m;
char c[2];
};
void anyType::put_st(char *st){strcpy(c, st);}
void main(){
anyType ob;
char *s="a";
ob.put_m(3);
ob.put_st(s);
cout << ob.get_st() << ob.get_m() << endl;
}
< 실행화면 >
3.2 객체와 this의 필요성 및 그 응용
3.2.3 멤버변수와 this의 이용
1) 구조체에서 this를 사용한 경우
#include
using namespace std;
struct bank { int money;
operator int() { return this->money;} // 이는 {return money;}와 같다.
};
void main() {
bank a, b; a.money=10; b.money=20; // 내부적으로 this가 포함된다.
cout << a + b << endl;
}
< 실행화면 >
2) 공용체에서 this를 사용한 경우
#include
using namespace std;
union bank {
int money;
operator int() { return this->money;}
};
void main() {
bank a, b; a.money=10; b.money=20; // 내부적으로 this가 포함된다.
cout << a + b << endl;
}
< 실행화면 >
3.3 객체의 메모리맵과 멤버변수의 다른 접근
#include
using namespace std;
struct bank { int money;
bank *p_ret() {return this;}
};
void main() {
bank a;a.money = 10;
cout << a.money << " " << *(int *)(&a +0) << endl;
cout << a.p_ret << " " << (int *)(&a +0) << endl;
}
< 실행화면 >
3.4 복합 자료형의 선언/정의의 위치
3.4.1 복합 자료형의 형식
#include
using namespace std;
void goo() { struct LoT{}; LoT y;} // LoT 구조체형 객체 선언/정의
struct OutT {
public: void goo(char e);
struc InnT {
public: void goo(char e);
private: char c;
};
private: char c;
};
void OutT::goo(char e) {::c = c = e;}
void OutT::InnT::goo(char e) {::c = c = e;}
void main() { OutT x_ob; OutT::InnT xy_ob; }