본문 바로가기

[C++]멤버함수의 오버로딩.

반응형

<Point.h>

   

#ifndef POINT_H

#define POINT_H

   

// Point 클래스를 정의한다.

class Point

{

public:

// 멤버 함수

void Print() const;

void Offset(int x_delta, int y_delta);

void Offset(const Point& pt);

   

// 생성자들

Point();

Point(int initialX, int initialY);

Point(const Point& pt);

   

// 접근자

void SetX(int value);

void SetY(int value);

int GetX() const {return x;};

int GetY() const {return y;};

   

private:

// 멤버 변수

int x, y;

};

   

inline void Point::SetX(int value)

{

if (value < 0)                

x = 0;

else if (value > 100)        

x = 100;

else        

x = value;

}

   

inline void Point::SetY(int value)

{

if (value < 0)

y = 0;

else if (value > 100)

y = 100;

else

y = value;

}

   

#endif

   

<Point.cpp>

   

#include "point.h"

#include <iostream>

using namespace std;

   

void Point::Offset(int x_delta, int y_delta)

{

SetX( x + x_delta);

SetY( y + y_delta);

}

   

void Point::Offset(const Point& pt)

{

Offset( pt.x, pt.y);

}

   

Point::Point(const Point& pt)

{

x = pt.x;

y = pt.y;

}

   

Point::Point(int initialX, int initialY)

{

SetX(initialX);

SetY(initialY);

}

   

Point::Point()

{

x = 0;

y = 0;

}

void Point::Print() const

{

cout << "( " << x << ", " << y << ")\n";

}

   

   

<example.cpp>

   

#include "point.h"

   

int main()

{

// 객체를 생성한다.

Point pt(50, 50);

Point delta( 100, 100);

   

// 점을 x 축으로 10, y 축으로 -10 만큼 이동시킨다.

pt.Offset( 10, -10);

   

// 현재 점의 위치 출력

pt.Print();

   

// 점을 범위 밖으로 이동시킨다. (안전성 테스트)

pt.Offset( delta);

   

// 현재 점의 위치 출력

pt.Print();

   

return 0;

}

   

소멸자는 오버로딩이 불가능하다.

반응형

'About 프로그래밍!!! > C++' 카테고리의 다른 글

[C++]동적으로 객체 생성하기.  (0) 2010.06.23
[C++]객체의 배열.  (0) 2010.06.23
[C++]멤버함수에 대한 포인터.  (0) 2010.06.23
[C++]부호 바꿔가며 더하기.  (0) 2010.06.22
[C++]인라인 함수.  (0) 2010.06.22
-->