2022-2-13 转换函数(conversion function) non-explicit-one argument ctor explicit-one argument ctor

article/2025/9/24 21:54:41

学习时间及标题:

2022-2-13 转换函数(conversion function) non-explicit-one argument ctor explicit-one argument ctor

学习内容:

1.转换函数(conversion function):

在这里插入图片描述
这是一个将分数(Fraction)类型转化为double类型的例子。我们可以看出转换函数不需要指明返回值类型,因为operator后面就给出了要返回的类型。
当编译double d=4+f;一句时,编译器会做如下尝试:
1.有没有重载运算符+,其左右两边参数类型为double类型和Fraction类型,但这里没有。
2.然后编译器又想,那能否将Fraction类型转换为double类型,然后参与运算,发现有转换函数可以实现。

2.non-explicit-one argument ctor和 explicit-one argument ctor:

在这里插入图片描述
non-explicit-one argument ctor指的就是具有一个实参的构造函数且前面没有关键字explicit。反之explicit-one argument ctor指的就是有关键字explicit的具有一个实参的构造函数。
注意:实参(argument)和参数(parameter)是不同的,例如图中的Fraction类的构造函数就是有两个参数,但只有一个实参-num。
当编译Fraction d2=f+4;一句时,编译器会做如下尝试:
1.看看Fraction这个类里有没有运算符+,发现有,但是运算符+右边也得是Fraction。
2.然后编译器又想,那能否将4转换为Fraction类型,发现可以,然后就将4转换为Fraction类然后参与运算。
这里4转换为Fraction类型是通过隐式转换的方式进行的。
如果构造函数只接受一个实参,则它实际上定义了转换为此类类型的隐式转换机制

在这里插入图片描述
根据上图,我们可以知道当运算符+的重载和转换函数同时出现时,会报错。
当编译Fraction d2=f+4;一句时,让我们看看错误出在哪里:
当编译器看到这一句时,发现有两条路可以走,一条是将4转换为Franction类型参与运算,另一条是将f转换为double类型参与运算。于是编译器就不知道怎么办了。

在这里插入图片描述
而当我们像上图一样,在构造函数前加关键字explicit后,仍然报错。
当编译Fraction d2=f+4;一句时,让我们看看错误出在哪里:
当构造函数前加上关键字explicit后,编译器就无法将4通过隐式转换将其转换为Fraction。


http://chatgpt.dhexx.cn/article/lW5MupnN.shtml

相关文章

java ctor_.ctor,.cctor 以及 对象的构造过程

.ctor: 简述:构造函数,在类被实例化时,它会被自动调用。 当C#的类被编译后,在IL代码中会出现一个名为.ctor的方法,它就是我们的构造函数,对应C#中的构造函数。且看下面的代码: publi…

Hive基础sql语法

原文:https://www.cnblogs.com/HondaHsu/p/4346354.html 1.先建 表 drop table sfmk.xzz_0726_srcarea_desarea; create table sfmk.xzz_0726_srcarea_desarea ( srcarea_desarea string ) row format delimited fields terminated by ,;2.将数据上传至hive 服务器 如&#xf…

内容耦合 c语言例子,耦合性 内聚加实例

基本信息 耦合性(或称"耦合度") 英文 : coupling 耦合性也叫块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块之间越独立则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息。 形…

[架构之路-183]-《软考-系统分析师》-13-系统设计 - 高内聚低耦合详解、图解以及技术手段

目录 第1章 什么是高内聚低耦合 1.1 概念 1.2 目的 1.3 什么时候需要进行高内聚低耦合 1.4 什么系统需要关注高内聚、低耦合 第2章 分类 2.1 内聚的分类 2.2 耦合的分类 第3章 增加高内聚降低耦合度的方法 3.1 增加高内聚 3.2 降低耦合度 第1章 什么是高内聚低耦…

java 高内聚低耦合_关于高内聚低耦合概念的理解

概念 高内聚低耦合,是软件工程中的概念,是判断软件设计好坏的标准,主要用于程序的面向对象的设计,主要看类的内聚性是否高,耦合度是否低。 目的 使程序模块的可重用性、移植性大大增强。 通常程序结构中各模块的内聚程…

lea 指令的小解

LEA指令的功能是将源操作数、即存储单元的有效地址(偏移地址)传送到目的操作数。 官方8086的白皮书,我的英语水平有限,只找到如下内容; ^offset和 Lea 伪指令 ; offset 此为一个伪指令,它不会有…

X86 LEA指令详解

1.SDM指令功能描述(LEA) LEA 总体描述: 从第二个操作数(源操作数)计算有效地址,并将结果存入第一个操作数(目的操作数)。源操作数是指定了一种访存操作的内存地址,目的操作数为一个通用寄存器…

css3围绕旋转动画js特效

下载地址 css3围绕旋转动画特效,两种旋转方式,自转和公转,css3按照固定的轨迹行驶。 dd:

HTML5 - 用CSS3动画制作场景切换效果(移动,旋转,淡入淡出等)

两个场景(即两个div视图)切换的时候,如果想添加个过渡动画,除了可以使用js来实现,还可以通过CSS3的animation属性来实现。 (注意:Internet Explorer 9 以及更早的版本不支持 animation 属性。&…

CSS3 元素转圈动画 (元素旋转动画)

CSS3 元素转圈动画 &#xff08;元素旋转动画&#xff09; <!DOCTYPE html> <html> <head> <style> div { width:100px; height:100px; background:red; position:relative; animation:mymove 5s infinite; -webkit-animation:mymove 5s infinite; /*…

css3 animation动画360旋转。旋转效果用transform:rotate过渡。

旋转&#xff1a; <div class"lds-hourglass"></div> .lds-hourglass {display:inline-block;position:relative;width:72px;height:72px } .lds-hourglass:after {content:" ";display:block;border-radius:50%;width:0;height:0;margin:6p…

css的rotate3d实现炫酷的圆环转动动画

1.实现效果 2.实现原理 2.1 rotate3d rotate3d&#xff1a;rotate3d() CSS 函数定义一个变换&#xff0c;它将元素围绕固定轴移动而不使其变形。运动量由指定的角度定义; 如果为正&#xff0c;运动将为顺时针&#xff0c;如果为负&#xff0c;则为逆时针。 语法&#xff1a; …

CSS3实现3d图片旋转动画效果

1.实现原理 1.首先所有的图片的容器position:absolute&#xff0c;叠加在一起&#xff0c;然后一次设置rotateY分别为&#xff08;36*i&#xff09;deg &#xff0c;i取0到10 &#xff1b;所有图片会相交成一个类似花的形状 然后为每个图片的容器设置translateZ&#xff0c;所有…

CSS3实现立体旋转动画效果

问题描述 一个3D立体图形在网页中呈现旋转效果,看起来十分炫酷,这个过程的实现其实并不困难,只需要利用CSS3动画效果,并对属性设置合适的参数之后,效果就能实现了。 在解决问题之前,需要先了解CSS3的动画效果是什么,其相关属性和参数有什么含义,这个过程就请查看CSS3动…

css3d动画:平移、旋转、缩放

1、前言&#xff1a; 3d比2d多了一个z轴&#xff0c;这个z轴是垂直我们屏幕的方向&#xff0c;指向我们人眼的是正轴&#xff0c;远离人眼的是负轴&#xff0c;图示如下&#xff1a; 2、景深设置和3d平移 当我们在z轴上向正轴方向上移动物体&#xff0c;也就是向我们眼前移动…

使用css3属性做一个循环旋转的动画

做这个动画是使用css3中的animation 和 @-webkit-keyframes 组合使用来完成 //这是html部分代码 <div class="home"><imgalt="logo"src="http://b-ssl.duitang.com/uploads/item/201206/26/20120626190359_MjB3s.jpeg"id="images…

基于HTML5+CSS3的图片旋转、无限滚动、文字跳动特效

本文分享几种基于HTML5CSS3实现的一些动画特效&#xff1a;图片旋转、无限滚动、文字跳动;实现起来均比较容易&#xff0c;动手来试试! 一、图片旋转 效果图如下&#xff1a; 这个效果实现起来其实并不困难。代码清单如下: <style type"text/css"> #liu{ wid…

内存碎片产生原因及终极解决办法

内存碎片通常分为内部碎片和外部碎片&#xff1a; 1. 内部碎片是由于采用固定大小的内存分区&#xff0c;当一个进程不能完全使用分给它的固定内存区域时就产生了内部碎片&#xff0c;通常内部碎片难以完全避免&#xff1b; 2. 外部碎片是由于某些未分配的连续内存区域太小&…

6、Redis内存碎片优化

1、Redis内存碎片是如何形成的 一是内存分配器的分配策略&#xff0c;内存分配器一般是按固定大小来分配内存&#xff0c;而不是按实际使用大小来分配。例如8字节、16字节、32字节...&#xff0c;2KB&#xff0c;4KB&#xff0c;8KB等&#xff0c;按程序申请时最接近某个固定值…

内存碎片处理技术

内存碎片处理技术 内存碎片是一个很棘手的问题。如何分配内存决定着内存碎片是否会、何时会、如何会成为一个问题。 即使在系统中事实上仍然有许多空闲内存时&#xff0c;内存碎片还会最终导致出现内存用完的 情况。一个不断产生内存碎片的系统&#xff0c;不管产生的内存碎片…