01/10/2018, 12:18

Hỏi về tạo toán tử trong c++

Mọi người cho mình hỏi tại sao mình phải tạo 1 đối tượng mới để chứa kết quả của phép tính (phép cộng trong code) ạ mà không thể in trực tiếp kết quả ra ạ ?Có cách nào để in ra luôn mà không cần phải tạo biến để nhận kết quả không ạ?
Mình xin trân thành cảm ơn.

#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;
class complex{
	float real,image;
public:
	complex(float r=0,float i=0) {
		real=r;
		image=i;
	}
complex operator+(complex b){
		complex c;
		c.real=real+b.real;
		c.image=image+b.image;
		return (c);
	}
friend ostream& operator<<(ostream &out,complex &b){
	out<<'('<<b.real<<"+"<<b.image<<"i)";
	return out;
} 
};
int main(){
	complex a(-2,5),b(3,4),c;
	cout<<a<<"+"<<b<<"=";
    c=a+b;// c=a.operator+ (b)
    cout<<c;
    //cout<<a+b;
    return 0;
}
Lê Cường viết 14:19 ngày 01/10/2018

Cụ thể là tại sao không thể dùng trực tiếp dòng 28 mà phải qua dòng 26, 27 và cách khắc phục để dùng trực tiếp dòng 28 ạ.

HK boy viết 14:31 ngày 01/10/2018

Cụ thể là tại sao không thể dùng trực tiếp dòng 28 mà phải qua dòng 26, 27 và cách khắc phục để dùng trực tiếp dòng 28 ạ.

Bạn nhìn lại cách khai báo operator

friend ostream& operator<<(ostream &out,complex &b){

Bạn đã nạp vào &b chứ không phải là b -> chỉ có thể in ra (giá trị) của 1 biến. Muốn in ra 1 giá trị số phức bất kì, bỏ & ở &b đi.

rogp10 viết 14:32 ngày 01/10/2018

Bạn đã nạp vào &b chứ không phải là b -> chỉ có thể in ra (giá trị) của 1 biến. Muốn in ra 1 giá trị số phức bất kì, bỏ & ở &b đi.

Không cần đâu, từ bị thiếu là const, và nó cũng có lí vì hàm xuất không có lí do gì để thay đổi biến được xuất.

Lê Cường viết 14:31 ngày 01/10/2018

const vào chỗ nào vậy bạn ?

rogp10 viết 14:22 ngày 01/10/2018

hàm xuất không có lí do gì để thay đổi biến được xuất.

vậy const nằm ở đấy

Bài liên quan
0