码迷,mamicode.com
首页 > 编程语言 > 详细

C/C++运算符

时间:2016-01-16 21:01:40      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

  1、转换运算符:一种特殊的类成员函数。定义该运算符后,编译器将在可以使用内置转换的地方自动调用它

class SmallInt
{
public:
    SmallInt(int i = 0) : m_val(i)
    {
        if (i < 0 || i > 255)
            throw std::out_of_range("Bad SmallInt initializer");
    }

    // 转换函数必须是成员函数,通常定义为const
    operator int() const { return m_val; }
private:
    std::size_t m_val;
};

int main()
{
    SmallInt si(12);
    double dval = 4.5;

    // si转换成int,再转换成double
    if (si >= dval) {}
    // si转换成int,再转换成bool
    if (si) {}
    cout << si << endl; // si转换成int
    // 3.541先被转换成int,再用int构造SmallInt对象
    SmallInt si2 = 3.541;
    int ival = static_cast<int>(si2) + 3; // 显式转换

    return 0;
}

  另外,语言只允许一次(自动)类类型转换。即,(只)通过转换运算符,若C类型可以转换为B类型,B类型可以转换为A类型,则C类型不可以直接转换为A类型。

 

 

  参考资料:

  《C++ Primer》

 

 

不断学习中。。。

C/C++运算符

标签:

原文地址:http://www.cnblogs.com/hanerfan/p/5136038.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!