zoukankan      html  css  js  c++  java
  • 【足迹C++primer】49、超载,更改,运营商

    超载,更改。运营商

    Conversion Operators
    转换操作符

    operator type() const
    Conversions to
    an array or a function type are not permitted.
    转换函数必须是成员函数。不能指定返回 类型,必须有一个空的參数列表。
    函数通常应 const。


    Defining a Class with a Conversion Operator(献给热爱英语的朋友偷笑

    定义一个类,表示一个在0到255范围类的一个整数
    class SmallInt
    {
    public:
        SmallInt(int i=0):val(i)
        {
            if(i<0 || i>255)
                throw std::out_of_range("越界!

    !!

    越界进球无效!

    "); } explicit operator int() const {return val;} //转换操作符。不能有參数,是成员函数,没有返回类型 private: size_t val; };


    实现下面:
    void fun1()
    {
        SmallInt si;
        si=4;   //吧4隐式转换成SmallInt类型
    //    si+3;   //隐式转换si为int类型,因为explicit这里会出错,加了explicit之后仅仅能显式转换
    }
    

    Conversion Operators Can Yield Suprising Results
    重载操作符能产生惊人的结果

    void fun2()
    {
        int i=42;
    //    cin<<i;   this code would be legal if the conversion to bool were not explicit!
    
    }
    

    说是这样说可是究竟有什么惊人的效果,反正我是没感觉!


    explicit Conversion Operators
    明白转换操作

    说白了就是叫我们使用explicit来使用!



    全代码!这次就简洁点哈哈!

    /**
    * 功能:重载。转换,运算符
    * 时间:2014年7月19日15:05:21
    * 作者:cutter_point
    */
    
    #include<iostream>
    #include <stdexcept>
    
    using namespace std;
    
    /**************************************
    Conversion Operators
    转换操作符
    **************************************/
    /*
    operator type() const
    Conversions to
    an array or a function type are not permitted.
    转换函数必须是成员函数。不能指定返回 类型,必须有一个空的參数列表。
    函数通常应 const。
    */
    /**
    Defining a Class with a Conversion Operator
    */
    //定义一个类。表示一个在0到255范围类的一个整数
    class SmallInt
    {
    public:
        SmallInt(int i=0):val(i)
        {
            if(i<0 || i>255)
                throw std::out_of_range("越界!!!越界进球无效!");
        }
        explicit operator int() const {return val;}  //转换操作符。不能有參数。是成员函数。没有返回类型
    private:
        size_t val;
    };
    
    void fun1()
    {
        SmallInt si;
        si=4;   //吧4隐式转换成SmallInt类型
    //    si+3;   //隐式转换si为int类型,因为explicit这里会出错。加了explicit之后仅仅能显式转换
    }
    
    /**
    Conversion Operators Can Yield Suprising Results
    重载操作符能产生惊人的结果
    */
    void fun2()
    {
        int i=42;
    //    cin<<i;   this code would be legal if the conversion to bool were not explicit!
    
    }
    
    /**
    explicit Conversion Operators
    明白转换操作
    */
    
    //说白了就是叫我们使用explicit来使用!
    
    
    
    int main()
    {
        return 0;
    }
    

    我来说一下,人活在这世界上肯定会遭遇非常多不幸和痛苦,并且一般这样的不幸的事从来都不是一个一个来的,他们会在你措手不及的时候一下子全来了。就像精明的猎人。在你露出破绽的一瞬间把所有的活力倾泻在你的身上,确保万无一失。
    每一个人不可能一辈子都不犯错,可是当厄运来临的时候我们要时刻准备好,不要惊慌失措。冷静下来,好好想一想你应该怎样去面对!






    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    ios 关于collectionView.performBatchUpdates()方法 --时时更新
    [iOS Xcode注释插件]
    Markdown编辑器简单总结
    [iOS Keychain本地长期键值存储]
    [iOS 利用MapKit和CoreLocation框架打造精简的定位和导航]
    <转>iOS9 Day-by-Day:iOS开发者必须了解的iOS 9新技术与API
    [PHP 作为iOS后台Json格式HTTP通信及文件上传的实现]
    [iOS AFNetworking框架实现HTTP请求、多文件图片上传下载]
    [Java 实现AES加密解密]
    [iOS Hybrid实践:UIWebView中Html中用JS调用OC方法,OC执行JS代码]
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4916584.html
Copyright © 2011-2022 走看看