C++ non-explicit-one argument ctor(具有一个实参的构造函数)

//non-explicit-one argument ctor(具有一个实参的构造函数)
#include <iostream> 
using namespace std;
class Fraction
{
    public:
          Fraction(int num,int den=1) 
          :m_numerator(num),m_denominator(den){//虽然具有两个变量,但是其中一个den已经赋给了初值,所以处理时只需要传入一个实数 
          }
        int get_m_numerator() const{return m_numerator;}    
        int get_m_denominator() const{return m_denominator;}
    private:
       int m_numerator;//分子
       int m_denominator; //分母 
};
inline int get_m_numerator
(const Fraction& x)
{
  return x.get_m_numerator ();//需要利用令一层嵌套,来获取类里的值;
                              //在类中的不能直接调用,会报错未声明,需要再次声明 
}

inline int get_m_denominator
(const Fraction& x)
{
  return x.get_m_denominator ();
}
inline Fraction
operator + (const Fraction& x, const Fraction& y)
{
  return Fraction ( get_m_numerator(x) + get_m_numerator(y), get_m_denominator (x) + get_m_denominator (y));//为了简化直接以分母为1来实现,简化了通分的步骤 
}
int main()
{
    Fraction f(3,1);
    Fraction d=f+4;//编译器会查找是否定义操作符‘+’的操作,发现已经定义
                   //调用 noexplicit ctor将四转化为Fraction(4,1)
                   //然后调用operator+,实现相加 
    cout<<d.get_m_numerator()<<endl;
    return 0;
}

 

原文链接: https://www.cnblogs.com/zmachine/p/12239089.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++ non-explicit-one argument ctor(具有一个实参的构造函数)

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/325572

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午3:22
下一篇 2023年3月1日 下午3:23

相关推荐