GEEKBAND面向C++下第一周笔记

2016-10-22  本文已影响0人  太帅JUE人

转换函数 conversion function

转出去

 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_m_denominator;  //分母 
};

    Fraction f(3,5);
    double d = 4 + f;


转回来

class Fraction
{
    public:
        Fraction(int num, int den=1)
        : m_num(num), m_den(den) {}

    Fraction operator + (const Fraction& f)
    {
        return Fraction(...);
    }
    private:
        int m_num;  //分子
        int m_den;  //分母 
};

{
    Fraction f(3,5);
    Fraction d2 = f + 4; 调用non-explicit ctor将4转为Fraction(4,1), 然后调用operator+ 
}




                 class Fraction
        {
               public:
                    Fraction(int num, int den=1)
                   : m_num(num), m_den(den) {}
                operator double() const 
                  {            return (double)m_num / m_den;
                  } 
              Fraction operator + (const Fraction& f)
             {
                                return Fraction(...);
                 } 
     private:
        int m_num;  //分子
       int m_den;  //分母 
            };

          {
           Fraction f(3,5);
           Fraction d2 = f + 4; // error ambiguous
      }

class Fraction
{
    public:
        explicit Fraction(int num, int den=1)
        : m_num(num), m_den(den) {}
    operator double() const 
    {
        return (double)m_num / m_den;
    } 
    Fraction operator + (const Fraction& f)
    {
        return Fraction(...);
    }
    private:
        int m_num;  //分子
        int m_den;  //分母 
};


{
    Fraction f(3,5);
    Fraction d2 = f + 4; // error conversion from 'double' to 'Fraction' requested
}


智能指针 pointer-like classes

智能指针一个做得像指针的class,首先,class里面一定有个真正的指针;其次,它得能代表一般的指针,因此就必须有指针的基本使用*和->,这需要操作符重载来实现。

迭代器 pointer-like classes

利用了操作符重载

仿函数 function-like classes


namespace 经验谈


成员模板 member template


模板特化 specialization


模板偏特化 partial specialization

要从左到右,不能跳着来

模板模板参数 template template parameter


数量不定的模板参数 variadic templates

QQ图片20161021235444.png

auto


range-base for


reference


上一篇下一篇

猜你喜欢

热点阅读