常州市金坛建设局网站,广告公司推广文案,h5营销型网站suteng,建网站代理哪个1 转换
1.1 转换函数
将当前对象的类型转换成其他类型
以 operator 开头#xff0c;函数名称为需要转成的类型#xff0c;无参数前面不需要写返回类型#xff0c;编译器会自动根据函数名称进行补充转换函数中#xff0c;分子分母都没改变#xff0c;所以通常加 const
…1 转换
1.1 转换函数
将当前对象的类型转换成其他类型
以 operator 开头函数名称为需要转成的类型无参数前面不需要写返回类型编译器会自动根据函数名称进行补充转换函数中分子分母都没改变所以通常加 const
// class Fraction里的一个成员函数
operator double() const
{return (double) (m_numerator / m_denominator);
}Fraction f(3,5);
double d 4 f; //编译器自动调用转换函数将f转换为0.61.2 non-explicit-one-argument ctor
将其他类型的对象转换为当前类型
one-argument 表示只要一个实参就够了
// non-explicit-one-argument ctor
Fraction(int num, int den 1) : m_numerator(num), m_denominator(den) {}Fraction f(3,5);
Fraction d f 4; //编译器调用ctor将4转化为Fraction1.3 explicit
当上面两个都有转换功能的函数在一起编译器调用时都可以用报错
class Fraction
{
public:Fraction(int num, int den 1) : m_numerator(num), m_denominator(den) {}operator double() const{return (double)m_numerator / m_denominator;}Fraction operator(const Fraction f) const{return Fraction(...);}
private:int m_numerator; // 分子int m_denominator; // 分母
};
...Fraction f(3,5);
Fraction d f 4; // [Error] ambiguousone-argument ctor 加上 explicit表示这个 ctor 只能在构造的时候使用编译器不能拿来进行类型转换了
...
explicit Fraction(int num, int den 1) : m_numerator(num), m_denominator(den) {}
...Fraction f(3,5);
Fraction d f 4; // [Error] 4不能从‘double’转化为‘Fraction’关键字 explicit 主要就在这里运用