【cpp语言】基础-5

转换函数

1
2
3
4
5
6
7
8
9
10
class Fraction {
public:
Fraction(int num, int den=1): m_numerator(num), m_denominator(den) {}
operator double() const { //转换函数,可写多个转换函数
return (double) (m_numerator / m_denominator);
}
private:
int m_numerator; //分子
int m_denominator; //分母
}

如何调用:

1
2
Fraction f(3,5);
double d = 4+f; //调用operator double()将f转换为小数

non-explicit-one-argument ctor

1
2
3
4
5
6
7
8
9
10
class Fraction {
public:
Fraction(int num, int den=1): m_numerator(num), m_denominator(den) {}
Fraction operator + (const Fraction& f) { //操作符重载
return (double) (m_numerator / m_denominator);
}
private:
int m_numerator; //分子
int m_denominator; //分母
}

调用:

1
2
Fraction f(3,5);
double d = 4+f; //调用non-explicit ctor将4转换为Fraction,再执行+

上面的operator +double两个函数不能同时存在,若同时存在编译器会报错

explicit-构造函数

1
2
3
4
5
6
7
8
9
10
class Fraction {
public:
explicit Fraction(int num, int den=1): m_numerator(num), m_denominator(den) {}
Fraction operator + (const Fraction& f) { //操作符重载
return (double) (m_numerator / m_denominator);
}
private:
int m_numerator; //分子
int m_denominator; //分母
}

智能指针

TODO


【cpp语言】基础-5
http://example.com/2022/06/27/【cpp语言】基础-5/
作者
leegaojun
发布于
2022年6月27日
许可协议