[转]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();

C++ operator 知识点的更多相关文章

  1. C++ operator 知识点 2

    http://blog.csdn.net/szlanny/article/details/4295854 operator它有两种用法,一种是operator overloading(操作符重载),一 ...

  2. 【转】C++易混知识点3. New Operator, Operator New, Placement New 实例分析,比较区别

    我们知道,C++中引入了New 这个内置符号,很大方便了指针的使用,程序员不必关注与这块堆上新分配的内存是如何来的,如何初始化的,然后如何转换为我们想要的类型指针的.现在,我们重点来分析下这个NEW内 ...

  3. C#知识点记录

    用于记录C#知识要点. 参考:CLR via C#.C#并发编程.MSDN.百度 记录方式:读每本书,先看一遍,然后第二遍的时候,写笔记. CLR:公共语言运行时(Common Language Ru ...

  4. C++重要知识点小结---3

    C++重要知识点小结---1:http://www.cnblogs.com/heyonggang/p/3246631.html C++重要知识点小结---2:http://www.cnblogs.co ...

  5. Perl小知识点之排序sort

    脚本这种东西,就是要常用,否则一段时间不用就生疏了,因此决定时时记一些小知识点,一来回顾一下,二来需要的时候可以迅速获得提示. Sort by number You could now write a ...

  6. 常用的机器学习&数据挖掘知识点【转】

    转自: [基础]常用的机器学习&数据挖掘知识点 Basis(基础): MSE(Mean Square Error 均方误差),LMS(LeastMean Square 最小均方),LSM(Le ...

  7. C# 知识点记录(持续更新中)

    从看C#入门经典开始系统的学习C#,本文主要记录学习过程中的一些知识点,也是我博客生涯的开始,比较重要成体系的部分会单重新写文章整理归纳. 1.一字不变的字符串 @字符 使转义序列不被处理,按照原样输 ...

  8. C/C++ 知识点---存储区

    C/C++ 知识点---存储区 在C++中,内存分成5个区,他们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区.    栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储 ...

  9. Java 面试知识点解析(四)——版本特性篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

随机推荐

  1. ps通道混合器

    输出通道:红 ,加绿变黄,加蓝变品红,减红变青.输出通道:绿,加红变黄,加蓝变青,减绿变品红.输出通道:蓝,加红变品红,加绿变青,减蓝变黄[对比色]

  2. powershell samples

    1,导出至EXCEL $arr =New-Object System.Collections.ArrayList $i = 1 $pstablelist = @(); $array =get-user ...

  3. ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128)

    问题描述:一个在Django框架下使用Python编写的定时更新项目,在一个Linux系统下运行没有问题,在另外一台Linux系统下测试,报如下错误: ascii codec can't decode ...

  4. svg中改变class调用的线条颜色

    <style type="text/css"><![CDATA[ .kV220 {stroke:rgb(255,0,0);fill:none} .kV22 {st ...

  5. OpenJudge计算概论-求一元二次方程的根【含复数根的计算、浮点数与0的大小比较】

    /*====================================================================== 求一元二次方程的根 总时间限制: 1000ms 内存限 ...

  6. 【Android】【录音】Android录音--AudioRecord、MediaRecorder

    [Android][录音]Android录音--AudioRecord.MediaRecorder Android提供了两个API用于实现录音功能:android.media.AudioRecord. ...

  7. 查看当前web服务器的并发连接数

    对于web服务器来说,并发连接数是一个比较重要的参数,通过下面的命令就可以直接查看# netstat -nat | grep ":80"| grep EST | wc -l命令解释 ...

  8. 用php自带的filter函数验证、过滤数据 -转载

    PHP过滤器包含两种类型 Validation:用来验证验证项是否合法 Sanitization:用来格式化被验证的项目,因此它可能会修改验证项的值,将不合法的字符删除等. input_filters ...

  9. jsPlumb 学习笔记

    介绍 使用svg完成画图,四个概念: anchor: endpoint在的位置,可通过name访问 endpoint:connection的一端节点,通过addPoint makeSource, co ...

  10. Struts2 Interceptors

    Alias Interceptor : 别名拦截器 <action name="someAction" class="com.examples.SomeAction ...