• CSE207 객체지향 강좌 및 C++ 관련, 누구나 묻고 답하는 게시판 입니다.
  • CSE207 수강생이 아니여도 편안하게 질문하세요.
  • 첨부화일은 이미지 화일 혹은 zip 화일로 업로드 하기를 권합니다.

제목review 3 1번 질문입니다.2019-11-12 15:24
작성자

#include <iostream>

#include <vector>

using namespace std;


class Complex {

double re, im;

public:

Complex(double r, double i) {

re = r; im = i;

}

Complex() { re = 0; im = 0; }

// + 연산자 구현

Complex& operator+(const Complex pt1) {

Complex result(this->re + pt1.re, this->im + pt1.im);

return result;

}


// + 연산자 구현

Complex& operator+(const double a) {

Complex result(this->re + a, this->im);

return result;

}

// - 연산자 구현

Complex& operator-(Complex pt2) {

Complex result(this->re - pt2.re, this->im - pt2.im);

return result;

}


// - 연산자 구현

Complex& operator-(const double a) {

Complex result(this->re - a, this->im);

return result;

}


void print() {

cout << re << " + i" << im << endl;

}

};


int main() {

Complex a(.3, 8.4), b(4.5, 5.2), c(2.0, 7.7);

Complex sum, dif;

sum = a + b + 3.0;

cout << " a + b + 3.0 = ";

sum.print();


dif = a - b - 2.0;

cout << " a - b - 2.0 = ";

dif.print();


sum = a + b + 5 - c - 8;

cout << " a + b + 5 - c - 8 = ";

sum.print();

return 0;

}


위와 같이 코드를 작성했는데요.

쓰레기값? 이 나옵니다.

main 함수에서 c = a+b, d = c + 3.0 이런 식으로 수정하면 값이 올바르게 나오는데요.

main함수를 수정하지 않고는 어떻게 해야 값이 바르게 나오는지 궁금합니다.

complex a, b를 합한 값이 어딘가에 저장되지 않아서 중간에 계산이 제대로 되지 않는 것 같긴한데, 잘 모르겠어서 질문드립니다.

댓글