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_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 知识点相关推荐
- C++知识点49——类继承与类的构造、拷贝、operator=和析构函数
一.类继承与构造函数 在C++中,无论类是否有继承关系,每个类各自控制它自己的成员的初始化.子类虽然含有基类的成员,但是并不能对基类的成员直接初始化,需要使用基类的构造函数初始化子类中的基类部分. 从 ...
- 一个operator+的易误用知识点
operate+等重载函数可以使类之间能执行加减等运算. a = a + b + b 该式中,程序先计算 a + b 并为其分配一个临时对象,再让该变量再加b,把返回引用赋给 a. 其中, a + b ...
- C/C++刷题知识点总结
纠正一些知识性偏见.欠缺: 变量占用内存大小,是用sizeof()计算出来那个,定义字符型数据时后面不添加'\0'的,但是在字符串数组后面是添加的:例如char a[]={'a','b','c'};` ...
- Effective C++ -- 零散知识点整理
Effective C++ --1让自己习惯C++ Effective C++ --2构造/析构/赋值运算 Effective C++ --3资源管理 Effective C++ --4设计与声明 E ...
- 8-10 牛客网刷题知识点集合
在关系代数运算中,五种基本运算为 ? 并.差.选择.投影.笛卡尔乘积 ( + - * 选择 投影) 关于OSI参考模型的描述中,正确的是? 按功能可以分为7个层次 OSI参考模型 自下而上: ...
- es if语法 script_熬夜7天,我总结了JavaScript与ES的25个重要知识点!
作者:哪吒 出自:程序员小灰 前言 说起JavaScript,大家都知道是一门脚本语言.那么ES是什么鬼呢?ES全称ECMAScript ,是JavaScript语言的国际标准. 最近,我总结了25条 ...
- 前端JavaScript基础知识点
JavaScript基础 阶段说明 JavaScript基础 Web API JavaScript高级 ##第一天重点内容 变量的声明及使用 数据类型 类型转换 运算符 JavaScript的组成 E ...
- python学习-知识点回顾(Python3的安装,编译器、一些关键知识点、数据类型、数据类型转换、运算符优先级)
文章目录 说明 python特点 Python3下载 PyCharm 标识符 python保留字 行与缩进 基本数据类型 Python数据类型转换 Python运算符优先级 说明 首先说明:本篇博文知 ...
- 常用的机器学习数据挖掘知识点【转】
转自: [基础]常用的机器学习&数据挖掘知识点 Basis(基础): MSE(Mean Square Error 均方误差),LMS(LeastMean Square 最小均方),LSM(Le ...
最新文章
- 学计算机的好处处300字,学计算机的心得体会300字
- Science Bulletin:上海植生所王二涛组发表基于绝对丰度的植物根际微生物群落“扩增-选择”组装模型
- python打印二进制内容,Python字节不打印二进制
- Maven exec:java 运行 Java main 方法
- 非看不可!飞猪技术专家教你在家高效办公!
- 【php】用filter_var实现的简单参数验证
- 解决内存不能为read或者0x0***的错误
- 一、bootstrap4基础(布局系统、栅格系统、显示与隐藏、对齐与排列、内容排版、代码与图文、表格样式、颜色和边框、工具类)
- 拦截导弹(信息学奥赛一本通-T1289)
- Node.js:入门资料
- sklearn聚类评价指标
- Trick(十三)—— 数学与函数
- php 什么时候使用单例,php什么时候使用单例模式
- 经典游戏扫雷详解--你也可以写出扫雷和玩好扫雷
- (笔记)涉及到的WinAPI函数
- Could not clean server of obsolete
- JAVA实现K-means聚类
- unity手游之聊天SDK集成与使用二
- 用网页打开本地exe程序
- 舔砖加瓦(java)之异常
热门文章
- java 统计数字个数_统计数字问题(Java)
- c语言所有关键字作用,void_C语言void关键字详解
- 如何卸载pip 重新安装mysql_pip install cymysql失败的解决办法 | 厘米天空
- python 线程锁_python多线程编程(3): 使用互斥锁同步线程
- 计算机组成原理袁春风百度云,计算机组成原理 袁春风chap3homework.pdf
- PAT乙级 1038 统计同成绩学生 C++)
- 网管型交换机比普通交换机有哪些明显优势
- 【渝粤教育】电大中专电商运营实操 答案作业 题库
- 【渝粤题库】广东开放大学 劳动心理学 形成性考核
- 【渝粤题库】陕西师范大学164205 ERP原理及应用 作业(专升本)