하마는하마하마해
297
2020-10-05 11:06:31
6
147

c++ 복소수 연산자 오버로딩에 대해 피드백 구할 수 있을까요?


#include <iostream>

using namespace std;


class Complex {

private:

    int re, img;


public:

    Complex(int re, int img) : re(re), img(img) {

        re = 0;

        img = 0;

        cout << "the initial value is 0+j0 " << endl;

    }

    Complex(const Complex& c) { re = c.re, img = c.img; }


    Complex operator+(const Complex& c) const;


    Complex operator*(const Complex& c) const;



};


Complex Complex::operator+(const Complex& c) const {

    Complex temp(re + c.re, img + c.img);

    return temp;

}


Complex Complex::operator*(const Complex& c) const {

    Complex temp(re * c.re - img * c.img, re * c.img + img * c.re);

    return temp;

}



int main() {

    Complex a(2, 4);

    Complex b(3, 5);


    Complex sum = a + b;

    Complex mul = a * b;


    cout << "the sum of two : " << sum;

    

    cout << "the multiplication of two: " << mul;

}

나름 잘 짰다고 생각했는데 합과 곱을 출력하는 부분에서 계속 막힙니다

c++을 배운지 얼마 안되서 미흡한데 피드백 주신다면 감사드립니다 :-)

0
  • 답변 6

  • Dive_Drink_Develope
    4k
    2020-10-05 11:19:45

    temp가 함수 내에서 생성되어 함수스코프를 벗어나자마자 사라지는거 아닌가요

    int mul_re = re * c.re - img * c.img;

    int mul_img = re * c.img + img * c.re;

    return Complex(mul_re, mul_img);


    처럼 하는것같네요 보통



  • Chaed
    2k
    2020-10-05 13:44:28

    가독성을 위해 gist나 okky의 코드 기능을 이용해주세요.

  • 엡실론
    1k
    2020-10-05 13:48:56

    생성자가 문제네요. re랑 img를 항상 0으로 초기화 하니.

  • 하마는하마하마해
    297
    2020-10-05 16:09:53

    @엡실론 

    문제에서 A constructor which uses an initial value of 0+0j. 라고하는데

    값을 초기화하라는 의미인지도 여쭤볼 수 있을까요...?

  • Dive_Drink_Develope
    4k
    2020-10-06 15:37:21

    억?ㅋㅋㅋㅋㅋ 생성자가...이모냥인걸 못봤네요.


    저건 멤버 변수 기본값을 0으로 넣고

    생성자에서 파라미터를 멤버변수에 넣는식으로 가셔야...


     int re;

     int img;


    public:

        Complex() {

            re = 0;

            img = 0;

            cout << "the initial value is 0+j0 " << endl;

        }

        Complex(int real, int imagenary) : re(re), img(img) {

            re = real;

            img = imagenary;

        }


    이런식 아닌가요?

  • Dive_Drink_Develope
    4k
    2020-10-06 15:38:32

     Complex(int real = 0, int imagenary = 0) : re(re), img(img) {

            re = real;

            img = imagenary;

        }


    아니면 하나만

  • 로그인을 하시면 답변 을 등록할 수 있습니다.