实验三

一、比较默认构造函数、自定义构造函数、析构函数以及复制构造函数的区别

#include<iostream>
using namespace std;

class rectangle
{
public:
rectangle();
rectangle(int x0, int y0);
~rectangle();
rectangle(rectangle &r);
int getS() { return s; }

private:
int x;
int y;
int s;
};

int main()
{
rectangle r1;
cout << r1.getS() << endl;
rectangle r2(10, 20);
cout << r2.getS() << endl;
rectangle r3(r2);
cout << r3.getS() << endl;
return 0;
}

rectangle::rectangle()
{
cout << "默认构造函数已经运行" << endl;
s = x * y;
}

rectangle::rectangle(int x0,int y0)
{
cout << "自定义构造函数已经运行" << endl;
x = x0;
y = y0;
s = x * y;
}

rectangle::rectangle(rectangle &r)
{
cout << "复制构造函数已经运行" << endl;
s = r.x*r.y;
}

rectangle::~rectangle()
{
cout << "析构函数已经运行" << endl;
}

 

二、定义一个复数类Complex,使得main函数中的代码可以工作

#include<iostream>
using namespace std;

class Complex
{
public:
Complex(double r0, double i0);
Complex(double r0);
Complex(Complex &c0);
void add(Complex &c0)
{
real += c0.real;
}
void show()
{
cout << real << "+" << imaginary << "i" << endl;
}
private:
double real;
double imaginary;
};

int main()
{
Complex c1(3, 5);
Complex c2 = 4.5;
c1.add(c2);
c1.show();
return 0;
}

Complex::Complex(double r0, double i0)
{
real = r0;
imaginary = i0;
}

Complex::Complex(double r0)
{
real = r0;
}
Complex::Complex(Complex &c0)
{
real = c0.real;
imaginary = c0.imaginary;
}

 

posted @ 2018-04-03 17:15  KrnFx  阅读(167)  评论(2编辑  收藏  举报