代码一
#include<iostream>
using namespace std;
class Complex{
public:
double real;
double imaginary;
public:
Complex(double r = 0, double i = 0);
Complex(const Complex& c);
~Complex();
void show(void);
};
Complex::Complex(double r,double i){//带默认参数,不填写参数就调用默认参
real = r;
imaginary = i;
}
Complex::Complex(const Complex& c) {
real = c.real;
imaginary = c.imaginary;
}
Complex::~Complex(void) {
cout << "析构完成" << endl;
}
void Complex::show(void) {
cout << real << "+" << imaginary << "i" << endl;
}
Complex add(const Complex& c1, const Complex& c2) {
Complex x;
x.real = c1.real + c2.real;
x.imaginary = c1.imaginary + c2.imaginary;
return x;
}
Complex sub(const Complex& c1, const Complex& c2) {
Complex x;
x.real = c1.real - c2.real;
x.imaginary = c1.imaginary - c2.imaginary;
return x;
}
int main(void) {
Complex c1(1, 2);
c1.show();
Complex c2(2, 2);
c2.show();
Complex c3;
c3=add(c1,c2);
c3.show();
return 0;
}
代码二
代码三
#include<iostream>
using namespace std;
class Complex{
private:
double real;
double imaginary;
public:
Complex(double r = 0, double i = 0);
Complex(const Complex& c);
~Complex();
void show();
void add(const Complex& c1, const Complex& c2);
void sub(const Complex& c1, const Complex& c2);
};
Complex::Complex(double r,double i){//带默认参数,不填写参数就调用默认参
real = r;
imaginary = i;
}
Complex::Complex(const Complex& c) {
real = c.real;
imaginary = c.imaginary;
}
Complex::~Complex(void) {
cout << real << "+" << imaginary << "i"<< "析构完成" << endl;
}
void Complex::show(void) {
cout << real << "+" << imaginary << "i" << endl;
}
void Complex::add(const Complex& c1, const Complex& c2) {
real = c1.real + c2.real;
imaginary = c1.imaginary + c2.imaginary;
}
void Complex::sub(const Complex& c1, const Complex& c2) {
real = c1.real - c2.real;
imaginary = c1.imaginary - c2.imaginary;
}
int main(void) {
Complex c1(1, 2);
c1.show();
Complex c2(2, 2);
c2.show();
Complex c3;
c3.add(c1,c2);
c3.show();
return 0;
}
上面这个代码的缺点是,源程序好看懂,但是用起来不直观
#include<iostream>
using namespace std;
class Complex {
private:
double real;
double imaginary;
public:
Complex(double r = 0, double i = 0);
Complex(const Complex& c);
~Complex();
double getReal(void) const ;//为什么要加const,把const都去掉试试
double getImaginary(void) const ;//为什么要加const,把const都去掉试试
void setReal(double r);
void setImaginary(double i);
void show(void);
};
Complex::Complex(double r, double i) {//带默认参数,不填写参数就调用默认参
real = r;
imaginary = i;
}
Complex::Complex(const Complex& c) {
real = c.real;
imaginary = c.imaginary;
}
Complex::~Complex(void) {
cout << real << "+" << imaginary << "i" << "析构完成" << endl;
}
void Complex::show(void) {
cout << real << "+" << imaginary << "i" << endl;
}
double Complex::getReal(void) const{//为什么要加const,把const都去掉试试
return real;
}
double Complex::getImaginary(void) const{//为什么要加const,把const都去掉试试
return imaginary;
}
void Complex::setReal(double r) {
real = r;
}
void Complex::setImaginary(double i) {
imaginary = i;
}
Complex add(const Complex& c1, const Complex& c2) {
Complex x;
x.setReal(c1.getReal() + c2.getReal());
x.setImaginary(c1.getImaginary() + c2.getImaginary());
return x;
}
Complex sub(const Complex& c1, const Complex& c2) {
Complex x;
x.setReal(c1.getReal() - c2.getReal());
x.setImaginary(c1.getImaginary() - c2.getImaginary());
return x;
}
int main(void) {
Complex c1(1, 2);
c1.show();
Complex c2(2, 2);
c2.show();
Complex c3;
c3 = add(c1, c2);
c3.show();
return 0;
}
/*
* 为什么加const
* https://www.cnblogs.com/caiminfeng/p/4761433.html
*/
/*
1+2i
2+2i
3+4i析构完成//为什么出现两次析构
3+4i析构完成
3+4i
3+4i析构完成
2+2i析构完成
1+2i析构完成
*/
课本上代码
#include<iostream>
using namespace std;
class Complex {
private:
double real;
double imaginary;
public:
Complex(double r = 0, double i = 0);
Complex(const Complex& c);
~Complex();
void show(void);
Complex add(const Complex& c);
Complex sub(const Complex& c);
};
Complex::Complex(double r, double i) {//带默认参数,不填写参数就调用默认参
real = r;
imaginary = i;
}
Complex::Complex(const Complex& c) {
real = c.real;
imaginary = c.imaginary;
}
Complex::~Complex(void) {
cout << real << "+" << imaginary << "i" << "析构完成" << endl;
}
void Complex::show(void) {
cout << real << "+" << imaginary << "i" << endl;
}
Complex Complex::add(const Complex& c) {
Complex x;
x.real = real + c.real;
x.imaginary = imaginary + c.imaginary;
return x;
}
Complex Complex::sub(const Complex& c) {
Complex x;
x.real = real - c.real;
x.imaginary = imaginary - c.imaginary;
return x;
}
int main(void) {
Complex c1(1, 2);
c1.show();
Complex c2(2, 2);
c2.show();
Complex c3;
c3 = c1.add(c2);
c3.show();
Complex c4;
c4 = c1.add(c2);
c4.show();
return 0;
}