合肥 企业网站设计公司,江苏建发建设项目咨询有限公司网站,邢台人才网最新招聘信息网,做宣传网站需要多少钱[转]C隐式类型转换 operator T http://m.blog.csdn.net/blog/micx0124/12389973# 对于operator关健字用于运算符重载这我们都知道#xff0c;其实operator还有另外一种作用#xff1a;强制类型转换。上一周为了对应项目中一个问题#xff0c;同事帮助写了一个类#xff0c;…[转]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_Hconst 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();转载于:https://www.cnblogs.com/maxpak/p/4486992.html