C++ 2011.09.24 (미검사)
#include<iostream.h>
class bumo // 부모 클래스
{
int a;
public :
void set ( int x ) { a = x; }
void print( ) { cout << "a = " << a << endl; }
};
class jasic : public bumo // 자식 클래스
{
int b;
public :
void input( int x ) { b = x; }
void prn( ) { cout << "b = " << b << endl; }
void callset(int x) { set(x); }
void callprint( ) { print( ); }
};
void main ( )
{
jasic ob;
ob.set(10); // bumo의 멤버이지만 상속받았음으로 호출가능
ob.print( ); // bumo의 멤버이지만 상속받았음으로 호출가능
ob.callset(99);
ob.callprint( );
ob.input(20); // jasic의 멤버임으로 호출가능
ob.prn( ); // jasic의 멤버임으로 호출가능
cout << "sizeof(ob) = " << sizeof(ob) << endl;
}
/*
class zenit
{
int x, y;
public :
zenit(int a, int b) { x = a, y = b; }
void print( ) { cout << "x = " << x << ", y = " << y << endl; }
friend zenit operator + ( zenit temp, int data ); // 객체 + 정수 일때 호출되는 함수
friend zenit operator - ( zenit temp, int data ); // 객체 - 정수 일때 호출되는 함수
friend zenit operator + ( int data, zenit temp ); // 정수 + 객체 일때 호출되는 함수
friend zenit operator + ( zenit temp1, zenit temp2 ); // 객체 + 객체 일때 호출되는 함수
};
zenit operator + ( zenit temp, int data ) // friend 함수를 이용해 구현한 연산자 오버로딩 함수
{
temp.x = temp.x + data;
temp.y = temp.y + data;
return temp;
}
zenit operator - ( zenit temp, int data ) // friend 함수를 이용해 구현한 연산자 오버로딩 함수
{
temp.x = temp.x - data;
temp.y = temp.y - data;
return temp;
}
zenit operator + ( int data, zenit temp ) // friend 함수를 이용해 구현한 연산자 오버로딩 함수
{
temp.x = temp.x + data;
temp.y = temp.y + data;
return temp;
}
zenit operator + ( zenit temp1, zenit temp2 ) // friend 함수를 이용해 구현한 연산자 오버로딩 함수
{
zenit im(0,0);
im.x = temp1.x + temp2.x;
im.y = temp1.y + temp2.y;
return im;
}
void main ( )
{
zenit ob(10,20), pb(0,0);
pb = ob + 10; // zenit와 int를 더할 수 있는 + 연산자의 오버로딩 함수가 호출된다.
ob.print();
pb.print();
pb = pb - 5; // zenit와 int를 뺄 수 있는 - 연산자의 오버로딩 함수가 호출된다.
pb.print();
pb = 10 + pb; // int와 zenit를 더할 수 있는 + 연산자의 오버로딩 함수가 호출된다.
pb.print();
pb = ob + pb; // zenit와 zenit를 더할 수 있는 + 연산자의 오버로딩 함수가 호출된다.
pb.print();
}
*/
/*
class phone
{
int num;
public :
phone(int x){ num = x; }
void print( ) { cout << "num = " << num << endl; }
void operator ++ ( ) { num++; }
void operator () ( ) { cout << num << endl; }
void operator () (int x)
{
num = x;
cout << "num이 " << num << "으로 변경됨" << endl;
}
};
void main ( )
{
phone ob(3);
ob.print( ); // 3
ob++;
ob.print( ); // 4
++ob;
ob.print( ); // 5
ob();
ob(10);
}
*/
/*
class nike
{
int nai;
int ki;
public :
nike (int x, int y) // 생성자 함수
{
nai = x;
ki = y;
}
void print( )
{ cout << "nai = " << nai << ", ki = " << ki << endl; }
friend nike operator + (nike x, int y); // 프렌드 함수
friend nike operator - (nike x, int y);
};
nike operator + (nike x, int y)
{
x.nai = x.nai + y;
x.ki = x.ki + y;
return x;
}
nike operator - (nike x, int y)
{
x.nai = x.nai - y;
x.ki = x.ki - y;
return x;
}
nike operator + (nike x, int y)
{
x.nai = x.nai + y;
x.ki = x.ki + y;
return x;
}
void main ( )
{
nike ob(10,20), pb(10,20);
ob.print( ); // 10, 20
ob = ob + 3;
ob.print( ); // 13, 23
ob = ob - 2;
ob.print( ); // 11, 21
ob = 3 + ob;
ob.print( ); // 14, 24
ob = ob + pb;
ob.print( ); // 24, 44
ob = ob + 3.5;
ob.print( ); // 27, 47
}
*/
/*
class nike
{
int nai;
int ki;
public :
nike (int x, int y) // 생성자 함수
{
nai = x;
ki = y;
}
void print( )
{ cout << "nai = " << nai << ", ki = " << ki << endl; }
nike operator + (int y)
{
nai = nai + y;
ki = ki + y;
return *this;
}
nike operator + (nike y)
{
nai = nai + y.nai;
ki = ki + y.ki;
return *this;
}
nike plus(int y)
{
nike temp(0,0);
temp.nai = nai + y.nai;
ki = ki + y.ki;
return *this;
};
void main ( )
{
nike ob(10,20), pb(10,20);
ob.print( ); // 10, 20
ob = ob + 3;
ob.print( ); // 13, 23
ob = ob + pb;
ob.print( ); // 23, 43
}
*/
/*
class nike
{
int nai;
int ki;
public :
nike (int x, int y) // 생성자 함수
{
nai = x;
ki = y;
}
void print( )
{ cout << "nai = " << nai << ", ki = " << ki << endl; }
nike operator + (nike y)
{
nai = nai + y.nai;
ki = ki + y.ki;
return *this;
}
nike plus(int y)
{
nike temp(int y);
nai = nai + y;
ki = ki + y;
return *this;
};
void main ( )
{
nike ob(10,20), pb(10,20);
ob.print( ); // 10, 20
ob = ob.plus(3);
ob.print( ); // 13, 23
ob = ob + pb;
ob.print( ); // 23, 43
}
*/