[转]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

C++ operator 知识点相关推荐

  1. C++知识点49——类继承与类的构造、拷贝、operator=和析构函数

    一.类继承与构造函数 在C++中,无论类是否有继承关系,每个类各自控制它自己的成员的初始化.子类虽然含有基类的成员,但是并不能对基类的成员直接初始化,需要使用基类的构造函数初始化子类中的基类部分. 从 ...

  2. 一个operator+的易误用知识点

    operate+等重载函数可以使类之间能执行加减等运算. a = a + b + b 该式中,程序先计算 a + b 并为其分配一个临时对象,再让该变量再加b,把返回引用赋给 a. 其中, a + b ...

  3. C/C++刷题知识点总结

    纠正一些知识性偏见.欠缺: 变量占用内存大小,是用sizeof()计算出来那个,定义字符型数据时后面不添加'\0'的,但是在字符串数组后面是添加的:例如char a[]={'a','b','c'};` ...

  4. Effective C++ -- 零散知识点整理

    Effective C++ --1让自己习惯C++ Effective C++ --2构造/析构/赋值运算 Effective C++ --3资源管理 Effective C++ --4设计与声明 E ...

  5. 8-10 牛客网刷题知识点集合

    在关系代数运算中,五种基本运算为 ? 并.差.选择.投影.笛卡尔乘积      ( + - * 选择 投影) 关于OSI参考模型的描述中,正确的是? 按功能可以分为7个层次 OSI参考模型 自下而上: ...

  6. es if语法 script_熬夜7天,我总结了JavaScript与ES的25个重要知识点!

    作者:哪吒 出自:程序员小灰 前言 说起JavaScript,大家都知道是一门脚本语言.那么ES是什么鬼呢?ES全称ECMAScript ,是JavaScript语言的国际标准. 最近,我总结了25条 ...

  7. 前端JavaScript基础知识点

    JavaScript基础 阶段说明 JavaScript基础 Web API JavaScript高级 ##第一天重点内容 变量的声明及使用 数据类型 类型转换 运算符 JavaScript的组成 E ...

  8. python学习-知识点回顾(Python3的安装,编译器、一些关键知识点、数据类型、数据类型转换、运算符优先级)

    文章目录 说明 python特点 Python3下载 PyCharm 标识符 python保留字 行与缩进 基本数据类型 Python数据类型转换 Python运算符优先级 说明 首先说明:本篇博文知 ...

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

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

最新文章

  1. 学计算机的好处处300字,学计算机的心得体会300字
  2. Science Bulletin:上海植生所王二涛组发表基于绝对丰度的植物根际微生物群落“扩增-选择”组装模型
  3. python打印二进制内容,Python字节不打印二进制
  4. Maven exec:java 运行 Java main 方法
  5. 非看不可!飞猪技术专家教你在家高效办公!
  6. 【php】用filter_var实现的简单参数验证
  7. 解决内存不能为read或者0x0***的错误
  8. 一、bootstrap4基础(布局系统、栅格系统、显示与隐藏、对齐与排列、内容排版、代码与图文、表格样式、颜色和边框、工具类)
  9. 拦截导弹(信息学奥赛一本通-T1289)
  10. Node.js:入门资料
  11. sklearn聚类评价指标
  12. Trick(十三)—— 数学与函数
  13. php 什么时候使用单例,php什么时候使用单例模式
  14. 经典游戏扫雷详解--你也可以写出扫雷和玩好扫雷
  15. (笔记)涉及到的WinAPI函数
  16. Could not clean server of obsolete
  17. JAVA实现K-means聚类
  18. unity手游之聊天SDK集成与使用二
  19. 用网页打开本地exe程序
  20. 舔砖加瓦(java)之异常

热门文章

  1. java 统计数字个数_统计数字问题(Java)
  2. c语言所有关键字作用,void_C语言void关键字详解
  3. 如何卸载pip 重新安装mysql_pip install cymysql失败的解决办法 | 厘米天空
  4. python 线程锁_python多线程编程(3): 使用互斥锁同步线程
  5. 计算机组成原理袁春风百度云,计算机组成原理 袁春风chap3homework.pdf
  6. PAT乙级 1038 统计同成绩学生 C++)
  7. 网管型交换机比普通交换机有哪些明显优势
  8. 【渝粤教育】电大中专电商运营实操 答案作业 题库
  9. 【渝粤题库】广东开放大学 劳动心理学 形成性考核
  10. 【渝粤题库】陕西师范大学164205 ERP原理及应用 作业(专升本)