• C++ operator 知识点


    [转]C++隐式类型转换 operator T

    http://m.blog.csdn.net/blog/micx0124/12389973#

    对于operator关健字用于运算符重载这我们都知道,其实operator还有另外一种作用:强制类型转换。上一周为了对应项目中一个问题,同事帮助写了一个类,使用到了operator的强制类型转换作用,后来source review的时候几个leader也不明白其作用,问我是怎么回事,当时我也只是一知半解,无奈解析了半天更天也没有让leader明白,汗。。。后来让这们同事来解析才清楚。
        下面通过一个示例来说明:

    /*************************Test_OperatorConvert.h*************************/
    #ifndef TEST_OPERATORCONVERT_H
    #define TEST_OPERATORCONVERT_H
    
    const int MAX_PATH2 = 256;
    
    class Test_OperatorConvert{
    public:
        Test_OperatorConvert();
        Test_OperatorConvert(char *str);
        virtual ~Test_OperatorConvert();
        char *GetStr();
        operator char*();
    private:
        char m_szTest[MAX_PATH2];
    };
    #endif
    
    


     

    /*************************Test_OperatorConvert.cpp*************************/
    #include "stdafx.h"
    #include "Test_OperatorConvert.h"
    
    #include <iostream>
    using namespace std;
    
    Test_OperatorConvert::Test_OperatorConvert()
    {
        memset(m_szTest, 0, sizeof(m_szTest));
    }
    
    Test_OperatorConvert::Test_OperatorConvert(char *str)
    {
        strcpy(m_szTest, str);
    }
    
    Test_OperatorConvert::~Test_OperatorConvert()
    {
    }
    
    // 这个函数实现的功能与operator char*()的功能一致。
    char *Test_OperatorConvert::GetStr()
    {
        return m_szTest;
    }
    
    Test_OperatorConvert::operator char*()
    {
        return m_szTest;
    }
    


     

    int main(int argc, char* argv[])
    {
        Test_OperatorConvert cTestInstance;
        char *pTest1 = cTestInstance; // 这里就是operator char*()发挥作用的地方,
                                                          // 类Test_OperatorConvert 被转换成char*类型。
        char *pTest2 = cTestInstance.GetStr(); //如果没有实现operator char*(),使用这种方法也一样。
        return 0;
    }
    



     



    有些人称这种方法为:隐式类型转换,实现的基本方法就是:operator type_name();

  • 相关阅读:
    windows7通过Dns.GetHostAddresses(Dns.GetHostName())获得ipv6地址转换到ipv4
    题解 P3829 【[SHOI2012]信用卡凸包】
    点积与叉积
    点分治
    珂朵莉树
    NOIP2020模拟赛(二十五)7.26 结题报告
    树连剖分
    NOIP2020模拟赛(拾)解题报告
    题解 P2538 【[SCOI2008]城堡】
    模拟退火
  • 原文地址:https://www.cnblogs.com/maxpak/p/4486992.html
Copyright © 2020-2023  润新知