explicit

TensorRT 初探(3)—— explicit_batch vs implicit_batch TensorRT系列——explicit batch 和 implicit batch 阅读详情

先来看看下面这个类

  1. class CA  
  2. {  
  3. public:  
  4.     int m_i;  
  5.     CA (int i);  
  6. };  
  7.   
  8. void foo(CA data)  
  9. {  
  10.     cout << data.m_i <<endl;  
  11. }  
  12.   
  13. int main(int argc, char *argv[])  
  14. {  
  15.     foo(20);  
  16.     return 0;  
  17. }  
class CA
{
public:
    int m_i;
    CA (int i);
};

void foo(CA data)
{
    cout << data.m_i <<endl;
}

int main(int argc, char *argv[])
{
    foo(20);
    return 0;
}


这样编译运行是没问题的, foo(20); 就是创建一个临时的CA对象, 并构造它, 即相当于 CA tmp(20); 然后再调用foo(tmp);


这是一种隐式转换

然后, 我们需要禁止这种隐式转换, 该如何呢..再看下面写法

  1. class CA  
  2. {  
  3. public:  
  4.     int m_i;  
  5.     explicit CA (int i); //加上关键字explicit  
  6. };  
  7.   
  8. void foo(CA data)  
  9. {  
  10.     cout << data.m_i <<endl;  
  11. }  
  12.   
  13. int main(int argc, char *argv[])  
  14. {  
  15.     foo(20);  
  16.     return 0;  
  17. }  
class CA
{
public:
    int m_i;
    explicit CA (int i); //加上关键字explicit
};

void foo(CA data)
{
    cout << data.m_i <<endl;
}

int main(int argc, char *argv[])
{
    foo(20);
    return 0;
}

这样之后, 编译就通不过了, 除非这样调用

foo(CA(20));


好了, explicit就是这样用....

补充一下, 虽然是阻止, 但只是阻止隐式转换, 如果是显示转换的话, 还是可以转换的(显示转换即强制转换)
C++的explicit是什么? 面向对象规则中,在对象生成的时候,存在隐式和显式两个方式。显示调用构造函数,使得调用很灵活,但是,可以选择“必须显式”的模式。explicit就是限定构造函数,使其只能显式调用,不能隐式转换的关键词。...... 阅读详情

相关推荐

Calpuff模型实战:从气象数据预处理到污染物扩散模拟全流程指南

本文提供了一份详尽的Calpuff模型实战指南,涵盖从气象数据预处理、地形处理到污染物扩散模拟与结果可视化的全流程。重点解析了Calmet气象场构建、Calpuff核心参数配置,并与AERMOD模型进行对比,帮助环境工程师与科研人员掌握这一强大的三维非稳态拉格朗日扩散模型,以应对复杂地形、海岸熏烟等实际模拟挑战。

s4t5u6v7的博客 458

阻止构造函数隐式转换

先来看看下面这个类 class CA { public: int m_i; CA (int i); }; void foo(CA data) { cout << data.m_i <<endl; } int main(int argc, char *argv[]) { foo(20); return 0; } 这样编译运行是没问题的, foo(2

wayaoqiang的专栏 1037

[QDS]从零开始,写第一个Qt Design Studio到程序调用的项目

最近在使用Qt Design Studio进行开发,但是简中网上要不就是只搜得到Qt Designer(Qt Creator内部库),要不就只搜得到一点营销号不知道从哪里搬来的账号,鉴于Qt Design Studio是一个这么强大的软件,自然是需要来进行一下小小的实践的。所以开了这篇文章,方便没有使用过Qt Design Studio 和 QML的开发者也可以快速上手QDS(Qt Design Studio)。在本文中,你将学会如何使用QDS开发一个简单的QML程序,与你的C++后端代码进行交流。

Andius的博客 8212

声明时候构造函数前加explicit -防止构造函数参数的隐式转换

按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示: class String { String ( const char* p ); // 用C风格的字符串p作为初始化值 //… } String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”

阳光梦的专栏 2020

华大HC32F460从零到200MHz:手把手教你配置时钟系统(附避坑指南)

本文详细解析了华大HC32F460 MCU的时钟系统配置,从启动过程、时钟树分析到实战配置200MHz系统时钟。文章手把手指导开发者如何正确配置外部晶振、MPLL锁相环及总线分频,并提供了硬件检查、代码解读及常见问题排查的避坑指南,帮助用户从零构建稳定可靠的高性能时钟环境。

net55的博客 295

R语言的下载、安装及环境配置(Rstudio&VSCode)

R for Windows是一个免费的用于统计计算和统计制图的优秀工具,是R语言开发工具。它拥有数据存储和处理系统、数组运算工具(其向量、矩阵运算方面功能尤其强大)、完整连贯的统计分析工具、优秀的统计制图等功能。提供的图形界面,可以在其中访问控制台、创建脚本或安装其他软件包。

zegeai的博客 2万+

C++11:使用= delete阻止拷贝构造和赋值=运算符重载

C++11增加了=delete修饰符,明确表达虽然声明了某函数,但是又禁止它们被使用的意思。本例中的拷贝构造函数和赋值运算符可以如下声明: 这样做最直接的效果就是,test方法本身就会发生编译错误,而不需要等到test方法真正被使用时。 class DiagClient { public: DiagClient(void); virtual ~DiagClient(void...

xikangsoon的博客 5351

从CPRI到eCPRI:手把手教你用Wireshark分析基站前传协议帧结构

本文手把手教你使用Wireshark工具,深入解析从CPRI到eCPRI的基站前传协议帧结构。通过搭建分析环境、编写解析脚本,并对比两者在时延管理、帧格式及数据封装上的差异,为无线通信领域的研发与测试人员提供了一套实用的逆向分析与故障排查方法。

x8y9z0的博客 604

【TensorRT】动态batch进行推理

模型训练时,每次训练可以接受不同batch大小的数据进行迭代,同样,在推理时,也会遇到输入Tensor大小(shape)是不确定的情况,其中最常见的就是动态batch了。

豆芽菜 5383

o型圈沟槽设计_O型密封圈——详细选型过程及步骤

一、密封圈常用材料二、密封圈常用密封形式密封圈分为活塞密封,活塞杆密封,端面密封,旋转密封。三、O型密封圈的选型规则O型密封圈的尺寸图径向安装O型圈选型(静态和动态运动)活塞杆密封选择适当规格的O形圈时,应该保证其外径(d1+2*d2)至少等于或者大于沟槽外径d6;当选择的O形圈直径d1大于250 mm时, O形圈外径将不能超过沟槽外径的3%;当选择的O形圈直径d1小于250mm时, O形圈外径将...

weixin_39856630的博客 2万+

开尔文四线法与电桥(uΩ电阻检测)

本文介绍了开尔文四线法与电桥在电阻测量中的应用,特别是针对uΩ级别电阻的精确检测。讨论了基本电桥电路的工作原理,强调了开尔文四线法的优势,它能消除导线和接触电阻的影响。文中还提到了测试设备的介绍,包括不同级别的电阻测试,并详细阐述了uΩ级别电阻测试的步骤和注意事项。此外,对比了惠斯通电桥与开尔文电桥,强调了它们在电阻测量中的作用和计算方法。

让你爱上电路设计 7859

【C++】explicit关键字详解(explicit关键字是什么? 为什么需要explicit关键字? 如何使用explicit 关键字)

在我们自己平时写 C++ 代码的时候,较少会用到 explicit关键字 。但是在C++相关的标准类库中,看到explicit关键字的频率还是很高的。既然出现的频率这么高,那么我们就来看看explicit关键字的作用到底是干什么的。

weixin_45031801的博客 8万+

简单VASP计算INCAR设置(结构优化OPT、静态自洽SCF、能带BAND、态密度DOS)

改变 K 点、NBANDS、晶胞、ENCUT、POTCAR、自旋或 SOC 后要检查兼容性。该参数不参与物理计算,因此不会改变总能量、受力、应力或最终结构。如果研究的是金属、磁性材料、表面、二维材料、分子、缺陷、DFT+U、杂化泛函或强自旋轨道耦合体系,部分参数必须调整。适合已经用 IBRION = 2 预优化、力较小、自由度较多的结构。在 IBRION = 1、2、3 中,它只是内部缩放因子。“不能修改”不是程序禁止修改,而是修改后会改变理论模型、数值精度或能量参考,使结果不能直接比较。

weixin_51420530的博客 124

C++中的explicit详解

C++ explicit详解

k6604125的博客 4万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C++中explicit的作用及用法

仅含一个参数的构造函数和除了第一个参数外其余参数都有默认值的多参构造函数承担了两个角色。 1.是个构造函数;2 .是个默认且隐含的类型转换操作符。 explicit是个C++关键字,其作用是指定仅有一个参数或除第一个参数外其它参数均有默认值的类构造函数不能作为类型转化操作符被隐含的使用,防止该类的对象直接被对应内置类型隐式转化后赋值,从而规定这个构造函数必须被明确调用。 我们通过例子来直...

qq_36570733的博客 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C++之explicit

C++之explicit

gghhb12的博客 9179

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

C++中的explicit关键字介绍

C++中的explicit关键字介绍

网络资源是无限的 2万+

Explicit 关键字

说实话,从来没有感觉到这个关键字有用,直到今天。explicit的意思是明显的,和它相对应的一个词是implicit意思是隐藏的。我参考了MSDN和《c++标准程序库》对这个关键字的描述,并参考了网络上对这个关键字的解释。现将它的使用方法和总结记录如下:首先这个关键字只能用在类构造函数。它的作用是不能进行隐式转换。class gxgExplicit  //没有关键字explic

每天进步一点点... 1万+

explicit的用法

explicit的用法 explicit关键字的作用是:禁止隐式调用类的单参数构造函数,主要禁用以下两种操作: 禁止隐式调用拷贝构造函数 禁止类对象之间的隐式转换 类对象之间的隐式转换是指利用一个已经存在的其它类型的对象来创建本类的新对象,且不显式的调用类的构造函数 类对象之间的隐式转换也很常见,例如:A a = 6;就是一个隐转换,它利用6创建一个A类的对象且没有显式调用A的构造函数A(66) 隐式调用具体实例如下: #include <iostream> using namesp

Wanggj的博客 1664

explicit 显示构造

在 C++ 中,explicit 关键字用于修饰构造函数,以防止隐式类型转换。使用 explicit 关键字可以提高代码的可读性和安全性,避免意外的类型转换和构造函数调用。以下是使用 explicit 关键字的一些好处及示例:

weixin_45355799的博客 1086

C++中的explicit关键字

C++中的关键字explicit主要是用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。类构造函数默认情况下声明为隐式的即implicit。 隐式转换即是可以由单个实参来调用的构造函数定义了一个从形参类型到该类类型的隐式转换。编译器在试图编译某一条语句时,如果某一函数的参数类型不匹配,编译器就会尝试进行隐式转换,如果隐式转换后能正确编译,编译器就会继续执行编译过程,否则报错。 explicit关键字只能用于类内部的构造函数声明上,...

姜的理想国 611

c++ 中explicit的作用

1、explicit作用 在c++中,explicit关键字用来修饰类的构造函数,修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。 explicit使用注意事项: explicit 关键字只能用于类内部的构造函数声明上。 explicit 关键字作用于单个参数的构造函数。 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换 例子: 未加explicit时的隐式类型转换 1. class C...

zuiyijiangnan的博客 2012
上一篇: shared_ptr 的使用及注意事项
下一篇: 获取系统时间
dodo_check
博客等级 码龄19年 29粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值