Mình có đoạn code bên dưới:
class Complex{
private:
double re,im;
public:
Complex (double r = 0, double i = 0): re(r) , im(i){}
Complex (Complex &c): re(c.re) , im(c.im) {}
Complex operator + (Complex c);
Complex operator - (Complex c);
Complex Complex:: operator + (Complex c){
return Complex (this->re + c.re, this->im + c.im);
// lỗi ở đây - error: no matching function for call to 'Complex::Complex(Complex)'
}
Complex Complex::operator - (Complex c){
Complex tru(this->re - c.re, this->im - c.im);
return tru;
}
Nếu mình thêm const vào copyconstructor thì chạy bình thường, nếu không thì phải làm giống hàm trừ bên dưới. Return constructor mà nó báo lỗi về copyconstructor, mình thấy khó hiểu quá. Mọi người giải thích giúp mình tại sao lỗi với.
Mình hỏi thêm nữa là dấu = mặc định giữa 2 class có nghĩa là gì thế? Kiểu như:
Complex a(1,2);
Complex b;
b=a; // Thế thì toàn bộ biến của b = biến của a đúng không?
Tại hạ mới học nên nếu hỏi ngu quá mong các tiền bối thông cảm!!!
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?