第三次上机作业
19C20C-石俊杰-20191003535
题1: 类的定义与基本操作
class Fraction {
//数据成员,访问控制属性默认是私有
int m_numerator = 0; // 分子默认为0; C++11
int m_denominator = 1; //分母默认为1;
public://公有成员函数
Fraction(int above = 0, int below = 1) :
m_numerator(above), m_denominator(below) {
cout << "Constructor called" << endl;
}
Fraction(const Fraction& rhs) : m_numerator(rhs.m_numerator), \
m_denominator(rhs.m_denominator) {
cout << "Copy constructor called" << endl;
}
};
Fraction divide1(const Fraction& divident, const Fraction& divisor) {
return Fraction(divident.getnumerator() * divisor.getdenominator(), \
divident.getdenominator() * divisor.getnumerator());
}
Fraction divide2(Fraction divident, Fraction divisor) {
Fraction result(divident.getnumerator() * divisor.getdenominator(), \
divident.getdenominator() * divisor.getnumerator());
return result;
}
1.1 执行下列语句后,分别执行的什么操作,会输出什么
Fraction a;
Fraction b(a);
Fraction c = Fraction(3, 2);
Fraction d1(2, 3), d2(4, 5);
Fraction e1 = divide1(d1, d2);
Fraction e2 = divide2(d1, d2);
执行操作:
a调用构造函数
b调用拷贝构造函数
(3,2)调用构造函数
d1调用构造函数
d2调用构造函数
divide1函数调用构造函数
divide2函数divisor调用拷贝构造函数
divide2函数divident调用拷贝构造函数
divide2函数result调用构造函数
divide2函数返回值调用拷贝构造函数
析构函数
输出结果:
Constructor called
Copy constructor called
Constructor called
Constructor called
Constructor called
Constructor called
Copy constructor called
Copy constructor called
Constructor called
Copy constructor called
Destructor called
Destructor called
Destructor called
Destructor called
Destructor called
Destructor called
Destructor called
Destructor called
Destructor called
Destructor called
1.2 在上述类的定义基础上,完善下列操作
1) 显示定义析构函数
~Fraction() {
cout << "Destructor called" << endl; }
2) 获取分数的分子
int getnumerator()const {
//获取分数的分子
return this ->m_numerator;
}
3) 获取分数的分母
int getdenominator()const {
//获取分数的分母
return this->m_denominator;
}
4) 实现分数的约分
Fraction reduction() {
int maxNum = gcd(m_numerator, m_denominator);
m_numerator /= maxNum;
m_denominator /= maxNum;
return