c++ 类的显式转换、隐式转换、可调用对象

C++中的显式构造和隐式构造 本文主要介绍了显式构造和隐式构造的使用场景。 阅读详情

我构建一个Front对象,其中包含了显式转换、隐式转换、可调用对象。

class Front{
	public:
		explicit Front(string str):s(str){}	//阻止隐式转换的构造函数
		operator string()const { //potential change 隐式转换
			return s;//返回要转换的成员
		}
		string get()const{  //explicit change 显式转换
			return s;//返回要转换的成员
		}
		void  operator ()()const{//可调用,后一个括号里放参数
			cout<<" can be called "<<s<<endl;// can be called usage	
		}
	private:
		string s;
};

测试:

int main(){
	using namespace std;
	Front f("sd");//构造对象
	//当构造函数为explicit时不能用 Front f="sd"![请添加图片描述](https://img-blog.csdnimg.cn/30a4d1f03c614a5294fc40e522219c45.png)

	string o="he";
	o+=f;//这里执行了隐式转换
	cout<<"potential change : "<<o<<endl;
	cout<<"can be called : ";
	f();//可调用对象执行
	cout<<"explicit change : "<<f.get()<<endl;
	//用f.get()来显式的转换类型
}

执行结果:在这里插入图片描述

C++ 类的隐式转换与explicit 我们都知道C/C++中的基本数据类型可以发生转换,类也一样可以。类的转换可以分为两种类型: 1. 类的定义与基本数据类型相关,基本数据类型与类相互转换 2. 类的定义与其他类相关,类与类之间相互转换 第二种稍微复杂一点,本文只讨论第一种。 class Person { public: Person() { cout &amp;lt;&amp;lt; &quot;no param con... 阅读详情

相关推荐

C++ 类型隐式转换函数

A 的类型转换函数:A-->其他类型;A 的转换构造函数:其他类型-->A

项脊轩 2358

C++成员函数,非成员函数,友元函数,隐式类类型转换

博客的所有内容都是个人理解,难免有理解错误的地方,欢迎大家多多拍砖! 成员函数是指在类内部定义的函数,非成员函数是指在某个命名空间或者全局空间内的函数,友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。成员函数与非成员函数的最大区别是,成员函数可以是虚拟的。 class testVar{ public: public void init(int num); fri...

数据库天地 240

咱们一起学C++第五十六篇:之C++转换运算符与显式转换解析

在C++学习的道路上,我们携手前行,不断深入理解这门语言的各种特性。此前,我们学习了众多运算符的知识,今天,我们将聚焦于转换运算符和C++的显式转换。转换运算符在不同数据类型之间的转换中起着关键作用,而显式转换则为我们提供了更明确、更可控的类型转换方式,但同时也需要谨慎使用,以避免引入潜在的错误。

wj_rdk的博客 1581

c++中的4种显式类型的转换

文章转载自http://m.jb51.net/article/48615.htm 1.概述 tatic_cast:用于“良性”和“适度良性”的转换,包括不用强制转换 const_cast:用于“const”和/或“volatile”进行转换 reinterpret_cast:转换为完全不同的意思。为了安全的使用它,关键必须转换回原来的类型。转换成的类型一般只能用于位操作,否

Ethan的博客 2077

C语言隐式/显式类型转换 | C++四种强制类型转换、类的隐式转换、explicit

文章目录何时发生隐式类型转换 何时发生隐式类型转换 在大多数表达式中,比int类型小的整数值提升为较大的整数类型 在条件中,非布尔值转换成布尔类型 初始化过程中,初始值转换成变量的类型;在赋值语句中,右侧运算对象转化成左侧运算对象的类型 算术运算或关系运算对象有多种类型,需要转换成同一种类型 函数调用时也会发生类型转换 ...

Jormungand_V的博客 2856

educoder数字逻辑实训:寄存器设计与应用(Logisim)

第1关:基本寄存器的设计 任务描述 本关任务:在Logisim中,构建由4个D触发器构成的4位基本寄存器,要求上升沿触发,具有异步复位功能。 第2关:移位寄存器的设计 任务描述 本关任务:在Logisim中,构建由4个D触发器构成的4位右移移位寄存器,要求上升沿触发,具有异步复位功能。 第3关:循环移位寄存器的设计 任务描述 本关任务:在Logisim中,构建由4个D触发器构成的4位循环右移移位寄存器,要求上升沿触发,具有异步复位功能以及并行数据同步加载功能。 第4关:并行..

qq_52209002的博客 1万+

c++显式数据类型转换

c++数据类型转换:static_cast,const_cast,dynamic_cast,reinterpert_cast 隐性转换 3+0.5; 显式转换static_cast在编译器完成类型的转化;dynamic_cast会在运行期执行,与类关系比较紧密; auto b = static_cast<double>(3) + 0.5; #int类型转换为整型,b为double audo b = static_cast<double>(3/4);#b=0 #b的

qhu1600417010的博客 616

基于浏览器插件的拼多多买家订单导出方法

基于浏览器插件的拼多多买家订单导出方法

2501_93542170的博客 1718

C++语法系列——隐式类类型转换

一、explicit (1)先声明用处:防止仅带一个形参的构造函数被用于隐式类类型转换 (2)隐式类类型转换?以类A举例说明什么是隐式类类型转换及其本质 class A { public: int age; string name; public: A() = default; A( int _age ): age( _age ) { }; }; void ...

Keep trying until you get it right 269

详细介绍pytorch重要的API

Tensor 是 PyTorch 中最基本的数据结构,提供了多种创建和操作张量的函数。Autograd 提供了自动求导功能,可以跟踪 Tensor 上的操作并计算梯度。损失函数用于衡量模型预测值与真实值之间的差异,提供了多种损失函数。是构建神经网络的基础类,提供了定义网络层和前向传播的方法。提供了 GPU 计算的支持,包括设备管理、内存管理等。提供了一些常用的函数式操作,如激活函数、损失函数等。提供了常用的数据集、模型架构和图像转换工具。提供了数据加载和预处理的工具,包括。

hello! 1223

[kriging](一)网上下载的kriging克里金的C++程序的初步调试

笔者在网上下载了一份克里金的C++程序,水平有限,正在逐步地调试中。 初步 克里金法现在在许多软件都已经有集成了,据笔者所知: arcgis : 看过有的arcgis培训视频里面简略介绍了里面的插值方法,有克里金。 surfer :笔者用过这个,效果很好。 gocad :听说有 landmark &jason :研究生时候用的专业的石油物探软件,里面有克里金法,万恶的开始。 pykrig...

FOREST优快云 5610

C++ 隐式的类类型转换

内容来源于C++ Primer 5,作为笔记。 如果构造函数只接受一个实参,则它实际上定义转换为此类类型的隐式转换机制,有时我们把这种构造函数称作转换构造函数。 能通过一个实参调用的构造函数定义了一条从构造函数的参数类型向类类型隐式转换的规则。 只允许一步类类型转换 类类型转换不是总有效 抑制构造函数定义的隐式转换 在要求隐式转换的程序上下文中,我们可以通过将构造函数声明为 explicit 加以阻止。 关键字explicit只对一个实参的构造函数有效。需要多个实参的构造..

weiyuanzhang123的博客 1178

GD32F303开发实战(一):从零搭建MDK工程与时钟配置详解

本文详细介绍了如何从零开始为GD32F303微控制器搭建一个清晰、可维护的MDK工程模板。内容涵盖开发环境准备、工程目录结构规划、文件分组管理、关键工程配置,并重点解析了时钟树原理,手把手指导配置108MHz系统时钟。通过实战步骤与常见问题排查,帮助开发者构建一个稳定可靠的开发基础,便于后续功能扩展。

weixin_29174141的博客 270

C++类型转换:隐式转换和显式转换

隐式转换 当一个值拷贝给另一个兼容类型的值时,隐式转换会自动进行。所谓隐式转换,是指不需要用户干预,编译器私下进行的类型转换行为。 例如: short a=2000; int b; b=a; 在这里,a在没有任何显示操作符的干预下,由short类型转换为int类型。这就是标准转换,标准转换将影响基本数据类型,并允许数字类型之间的转换(short到int, int到float, double到int…),到bool或从bool,以及一些指针转换。 对于非基本类型,数组和函数隐式地转换为指针,并且指

DayDayUp 2万+

uniapp:在map地图组件上添加控件,在地图上添加浮层展示自定义按钮或元素,uniApp如何在Map组件地图上添加悬浮在上面的图标/图片(全平台兼容安卓苹果app、H5网页、微信小程序、nvue)

uni-app的map添加控件问题,uniapp实现地图展示控件,uniapp小程序如何在map组件上增加按钮,uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,Uniapp腾讯地图添加控件,uniapp百度地图添加控件,地图上展示控件并可以点击,在地图上展示控件信息,uniapp map地图怎么向地图上增加工具栏,使用cover-view将控件在地图上展示,解决uniapp map上添加浮层无法显示问题,不显示怎么办,css样式不生效,地图等最高层

✅ 精选推荐文章 3230

数学建模学习(78):多输入多输出回归预测模型(结合XGBoost实现)

多输入多输出回归预测问题求解

全栈川川 8130

【C++】类型转换详解:显式与隐式转换的艺术

本文系统讲解了C/C++中的类型转换机制,包括隐式转换(编译器自动完成的基本类型转换)和显式转换(程序员强制执行的转换)。重点分析了四种C++风格转换运算符(static_cast、dynamic_cast等)的使用场景和安全性,对比了两种转换方式的优缺点,并提供了最佳实践建议:优先使用隐式保证安全,明确转换意图时采用显式转换,慎用高风险转换。文章还特别提醒注意数据截断、符号问题等潜在风险,为开发者正确处理类型转换提供了全面指导。(149字)

会当凌绝顶,一览众山小 2042

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C++ 隐式转换与显式转换:从原理到实践

就像你给朋友发消息:“给我 2 杯奶茶”,朋友知道 “2” 是 “2 杯”,不需要你说 “2 杯 = 2 杯”,电脑也能 “理解” 这种简单、安全的转换。就像你要把 “1.75 米” 的身高转成 “175 厘米”,必须明确说 “1.75 米 = 175 厘米”,不能让电脑自己猜。就是电脑看不懂你想怎么转换,或者转换可能有风险,你必须亲自写代码告诉它:“我要把这个类型变成那个类型,出问题我自己负责!就是你写代码时,不需要自己动手,电脑(编译器)自动帮你把一种类型 “变成” 另一种类型。

2501_90200491的博客 1233

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C/C++---隐式显式转换

隐式转换由编译器自动进行,常见于数值类型、指针、布尔及用户定义转换,但可能引发代码可读性和错误风险问题。显式转换则通过C风格强制转换、函数风格转换及C++新式转换运算符(如static_cast、dynamic_cast等)实现,更加安全。explicit关键字用于禁止隐式转换,适用于单参数构造函数和转换运算符,尤其在C++11及以后版本中,还可用于多参数构造函数。

MzKyle的博客 1233

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C++ 隐式和显式初始化,类型转换

C++隐式和显式初始化,类型转换 1.隐式和显式初始化 1.1C++隐式初始化 intival(1024); stringhello("Helloworld.") 1.2C++显式初始化 intival=1024; stringhello="Helloworld." *PS:注意这里"="语法是拷贝...

baitao6764的博客 1109

C++ 隐式和显式 初始化,类型转换

 1. 隐式和显式初始化1.1 C++隐式初始化int ival(1024);string hello("Hello world.")1.2 C++显式初始化int ival = 1024;string hello = "Hello world."  *PS: 注意这里"=" 语法是拷贝构造函数而不是赋值运算! 因为一个新对象被定义一定要有一个构造函数而不不是一个赋值操作 

stevenliyong 的专栏 4320

C++ 隐式转换和显示转换(转)

1)C++的类型转换分为两种,一种为隐式转换,另一种为显式转换。 2)C++中应该尽量不要使用转换,尽量使用显式转换来代替隐式转换。 1隐式转换 定义:隐式转换是系统跟据程序的需要而自动转换的。 1)C++类型(char,int,float,long,double等)的隐式转换: 算术表达式隐式转换顺序为: 1、char - int - long - double 2、float - double //1)算术表达式 int m = 10; double n...

qq_14874791的博客 1万+

C++拾趣——类构造函数的隐式转换

之前看过一些批判C++的文章,大致意思是它包含了太多的“奇技淫巧”,并不是一门好的语言。我对这个“奇技淫巧”的描述颇感兴趣,因为按照批判者的说法,C++的一些特性恰巧可以让一些炫耀技术的同学有了炫耀的资本——毕竟路人皆知的东西却没什么好炫耀的。这又让我想起了《孔乙己》中关于“回”字有几种写法的描述。当时老师在上此课时,是抱着批判的态度去评价孔乙己的这种思想,而我却感觉到这其中必有一...

方亮的专栏 6642

类型转换【C++提升】(隐式转换、显式转换、自定义转换、转换构造函数、转换运算符重载......你想知道的全都有)

C++是一种强类型语言,其类型转换机制非常重要。类型转换使得不同数据类型之间可以相互转换,以满足程序的灵活性和可操作性。本文即将探讨的C++中的类型转换内容主要包括:基本类型转换,隐式类型转换,显式类型转换和自定义类型转换等内容

Stark的博客 1426

常见C++中隐式转换整理

C++ 中的隐式转换(Implicit Type Conversion)是编译器在必要时自动将一种类型的值转换为另一种类型的过程。隐式转换主要发生在以下几种情况下

weixin_43414962的博客 1417
上一篇: 【算法】用递归的方法求斐波那契数列2021-11-15
下一篇: 【数据结构】二叉树
Sweler*19
博客等级 码龄7年 65粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值