C++/열혈 C++ 프로그래밍(윤성우 저)

열혈 C++ 프로그래밍 10-2 문제

구데타마 2017. 6. 8. 19:14

[1번 문제]

/*

부호 연산자로는 - 단항 연산자이다.

연산자는 피연산자의 부호를 반전시킨 겨로가를 반환한다.

예를 들어서 다음 문장이 실행되면,

int num2= -num1;

num2에는 num1 절대값은 같지만 부호가 다른 값이 저장된다.

물론 num1 값에는 영향을 미치지 않는다.

이와 유사하게 Point 클래스를 대상으로 - 연산자를 오버로딩 해보자.

다음의 문장이 실행되면, Point pos2= -pos1;

Pos2 멤버변수는 pos1 멤버변수 값과 다른 부호의 값으로 초기화되도록 오버로딩해보자

*/

#include <iostream>

using namespace std;

 

class Point

{

private:

        int xpos;

        int ypos;

public:

        Point(int x = 0, int y = 0) :xpos(x), ypos(y)

        {

        }

        void ShowPosition()

        {

               cout << '[' << xpos << ", " << ypos << ']' << endl;

        }

        Point &operator-(Point &ref)

        {

               //책에서는 Point pos(-xpos, -ypos);

               xpos = -ref.xpos;

               ypos = -ref.ypos;

               return *this;

        }

};

 

int main(void)

{

        Point pos1 = { 3, 4 };

        Point pos2; //0, 0으로 초기화

 

        pos1.ShowPosition();

        (pos2 - pos1).ShowPosition();

        return 0;

}


[2번 문제]

/*

~연산자는 단항 연산자로서 비트단위 not 의미를 갖는다.

, ~연산자는 비트단위로 1 0으로, 0 1 바꾼다.

이에 우리는 Point 객체를 대상으로 다음과 같이 연산이 가능하도록 ~연산자를 오버로딩하고자 한다.

Point pos2= ~pos1;

위의 ~연산의 결과로 반환된 객체의 xpos 멤버에는 pos1 ypos값이,

반환된 객체의 ypos 멤버에는 pos1 xpos 값이 저장되어야 한다

*/

#include <iostream>

using namespace std;

 

class Point

{

private:

        int xpos;

        int ypos;

public:

        Point(int x = 0, int y = 0) :xpos(x), ypos(y)

        {

        }

        void ShowPosition()

        {

               cout << '[' << xpos << ", " << ypos << ']' << endl;

        }

        friend Point &operator~(Point &ref);

};

 

Point &operator~(Point &ref)

{

        int temp = ref.xpos;

        ref.xpos = ref.ypos;

        ref.ypos = temp;

        //책에서는 Point pos(ref.ypos, ref.xpos);

        return ref;

}

 

int main(void)

{

        Point pos1 = { 3, 4 };

 

        pos1.ShowPosition();

        (~pos1).ShowPosition();

        return 0;

}



개발 환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~


[참고] 열혈 C++ 프로그래밍 윤성우 저

반응형