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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358886.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2020年前端招聘技术概览(包含常见的打包工具,框架及前端技术简介)

学习当下前端技术最好的方法就是从求职网站上找出前端的招聘要求,因为前端技术每年变化都很快,每个阶段都会不一样,这里简单从网站招聘要求罗列,仅供参考。更有针对性的是针对每个公司的招聘要求写简历,学习相关技术(除非那个公司特别好) 1.熟悉html,javaScript,css,aja…

java.util.concurrent包

本文是我们学院课程中名为Java Concurrency Essentials的一部分 。 在本课程中&#xff0c;您将深入探讨并发的魔力。 将向您介绍并发和并发代码的基础知识&#xff0c;并学习诸如原子性&#xff0c;同步和线程安全之类的概念。 在这里查看 &#xff01; 目录 1.简介 2. jav…

DVWA通关教程(下)

XSS&#xff08;DOM&#xff09; XSS(DOM)是一种基于DOM树的一种代码注入攻击方式&#xff0c;可以是反射型的&#xff0c;也可以是存储型的&#xff0c;所以它一直被划分第三种XSS 与前两种XSS相比&#xff0c;它最大的特点就是不与后台服务器交互&#xff0c;只是通过浏览器…

Python模拟ICMP包

主要使用Scapy来完成 基础环境 VM1&#xff08;192.168.1.226&#xff09; | | VM2&#xff08;192.168.1.125&#xff09; vm1封装icmp包发给vm2 vm1脚本&#xff1a; #! /usr/bin/env pythonfrom scapy.all import *target "192.168.1.125" ip IP() icmp ICMP()…

SSH暴力破解实战

一.hydra【海德拉】 海德拉&#xff08;Hydra&#xff09;&#xff1a;希腊神话中的九头蛇&#xff0c;是西方的神话生物&#xff0c;在古希腊神话中出现最为频繁。传说它拥有九颗头&#xff0c;其中一颗头要是被斩断&#xff0c;立刻又会生出两颗头来。 Hydra是世界顶级密码暴…

前端工程师必备谷歌浏览器F12下的调试知识点

chrome浏览器版本(所有的操作都是基于我电脑上目前这个版本。) 进入开发者工具的方式:F12 (所有浏览器都可以用F12进入开发者工具),ChromeDev(开发者工具简称)按照类别可以分为下面几种 审查元素 ctrl+shift+c 在页面上选择一个HTML元素并审查它 切换浏览设备 ctrl+…

java createjpeg4_在linux下用java的JPEGCodec.createJPEGEncoder(bos)生成jpg图片问题

在rh8 linux 下用java的JPEGCodec.createJPEGEncoder(bos)生成jpg图片&#xff0c;XServer已启动。出现如下问题错误提示如下java.lang.InternalError: Cant connect to X11 window server using :0.0 as the value of the DISPLAY variable…

ASP.Net string 类的扩展方法 [转]

string 类的扩展方法列表(基本相同于 IEnumerable<T> 接口的成员列表): Aggregate<> //累加 All<> //是否都满足条件 Any<> //是否有一个满足条件 AsEnumerable<> // AsParallel<> …

Netflix Archaius用于物业管理–基础知识

Netflix Archaius提供了一组精巧的功能&#xff0c;可将动态属性加载到应用程序中。 这篇博客文章只是我所了解的Archaius范围的文档&#xff0c;比我在这里所记录的内容要多得多&#xff0c;但这应该提供一个很好的开始&#xff1a; 默认行为 考虑一个简单的属性文件&#x…

程序员应该如何提问?

提问是软件开发的一个不可避免的环节&#xff0c;各种思想火花地碰撞往往能产生奇妙的结果&#xff0c;但是作为一名傲娇霸气君临天下人见人爱花见花开炒鸡屌的程序员&#xff0c;你是否真的思考和总结过自己的提问方式呢&#xff1f;如何去问一个让双方都满意的好问题并最大程…

Kali利用msf对MS10_061漏洞进行渗透测试

注意事项&#xff1a; kail首次打开metasploit&#xff0c;会初始化数据&#xff0c;可能会有点慢&#xff0c;请耐心等待&#xff01;本文仅供学习漏洞渗透测试&#xff0c;不得用于其他非法用途&#xff0c;否则造成的任何后果自负&#xff01;&#xff01;&#xff01; 1.…

如何判断ios设备中是否安装了某款应用

URL Schemes关键字研究一下即可 常见得URL Schemes见http://www.cnblogs.com/huangzs/p/4491286.html if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:"alipay://"]]) { NSLog(" installed"); NSURL *url [NSURL URLWithStr…

java初始化数组的时候给多少长度_java二维数组的初始化及使用其长度

二维数组的初始化1.静态初始化int intArray[ ][ ]{{1,2},{2,3},{3,4,5}};Java语言中&#xff0c;由于把二维数组看作是数组的数组&#xff0c;数组空间不是连续分配的&#xff0c;所以不要求二维数组每一维的大小相同。2.动态初始化1) 直接为每一维分配空间&#xff0c;格式如下…

前端大牛都在看的书

目录结构 HTMLCSSJavaScript正则表达式jQueryNodejsReactVueAngular通信方式数据存储服务端架构与安防算法设计模式开发辅助客户端开发 HTML Head First HTML 与 CSS

Metaspliot 控制终端利用Samba漏洞渗透

Samba简介 Samba是linux和unix系统上实现smb协议的一个免费软件&#xff0c;由服务器及客户端程序构成&#xff0c;Samba是面向Linux和Unix环境的Windows互操作性套件。它适用于在可能包括Linux、Unix、Windows、macOS及其他操作系统的异构环境下工作的那些人。Samba使用服务器…

群里分享的react的收藏一下!今日周末,改了个表单验证然后无所事事了!

今日周末&#xff0c;改了个表单验证然后无所事事了&#xff0c;然后把昨天群里分享的react的收藏一下尽管现在还在研究angular和nodeJs毕竟刚刚开始用有点不熟...没准以后会研究一下react毕竟看着下面这张图还是觉得有点欢乐的 现在最热门的前端框架&#xff0c;毫无疑问是 Re…

java的设计模式用的什么软件_《图解Java多线程设计模式》UML用什么软件画?

eclipse插件 AmaterasUML (下载地址&#xff1a;https://zh.osdn.net/projects/amateras/releases/#21568)解压放到plugins文件夹下在安装AmaterasUML之前要先安装GEF(eclipse在线安装&#xff0c;参考&#xff1a;http://www.cnblogs.com/xiluhua/p/6667935.html)eclipse-File…

spring bean配置_在运行时交换出Spring Bean配置

spring bean配置如今&#xff0c;大多数Java开发人员都定期与Spring打交道&#xff0c;而我们当中的许多人都已经熟悉了它的功能和局限性。 最近&#xff0c;我遇到了一个我从未遇到过的问题&#xff1a;引入了基于运行时引入的配置来重新连接Bean内部的功能。 这对于简单的配置…

HTML教程(看完这篇就够了)

目录结构 HTML教程 HTML 简介HTML 编辑器HTML基础 HTML 元素HTML 属性HTML 标题HTML 段落HTML 文本格式化HTML 链接HTML headHTML CSSHTML 图像HTML 表格HTML 列表HTML 块级元素HTML 布局HTML 表单

Metasploit入门用法(主动攻击)

–作者&#xff1a;CV 本文主要讲metasploit的入门用法&#xff0c;还有一些渗透细节和思路&#xff0c;有不足的&#xff0c;欢迎互相学习研究。本人区别于书籍的特点是&#xff1a;书籍以模块为划分&#xff0c;我是以连续的步骤进行书写&#xff0c;更突出一次渗透的思路&a…