C++学习笔记(二十二):c++ 隐式转换与explicit关键字

  • c++允许编译器对代码执行一次隐式转换。
  • #include<iostream>
    #include<string>class Entity
    {
    public:std::string name;int age;Entity(int x) {age = x;}Entity(std::string x){name = x;}
    };
    void PrintEntity(Entity e)
    {std::cout << e.age << ":" << e.name << std::endl;
    }
    int main()
    {PrintEntity(20);    //隐式转换,调用Entity(int x)构造函数将20隐式转换为Entity对象PrintEntity(std::string("pcop"));    //隐式转换,调用Entity(std::string x)构造函数将"20"pcop"隐式转换为Entity对象std::cin.get();return 0;
    }
  • #include<iostream>
    #include<string>class Entity
    {
    public:std::string name;int age;Entity(int x) {age = x;}Entity(std::string x){name = x;}
    };
    void PrintEntity(Entity e)
    {std::cout << e.age << ":" << e.name << std::endl;
    }
    int main()
    {PrintEntity(20);    //隐式转换,调用Entity(int x)构造函数将20隐式转换为Entity对象PrintEntity(std::string("pcop"));    //隐式转换,调用Entity(std::string x)构造函数将"20"pcop"隐式转换为Entity对象PrintEntity("pcop");  //报错,因为pcop时const char*类型的,编译器调用隐式转换将时const char*类型转换为string,但仅能隐式转换一次,故编译器不能将string类型隐式转换为Entity类型std::cin.get();return 0;
    }
  • explicit关键字放在构造函数前面,意味着该构造函数不允许进行隐式转换。示例如下:

  • #include<iostream>
    #include<string>class Entity
    {
    public:std::string name;int age;explicit Entity(int x) {age = x;}Entity(std::string x){name = x;}
    };
    void PrintEntity(Entity e)
    {std::cout << e.age << ":" << e.name << std::endl;
    }
    int main()
    {PrintEntity(20);    //不能进行隐式转换,因为调用Entity(int x)构造函数前面有explicit关键字PrintEntity(std::string("pcop"));    //隐式转换,调用Entity(std::string x)构造函数将"20"pcop"隐式转换为Entity对象std::cin.get();return 0;
    }

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

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

相关文章

buuctf 逆向 number_game

这是一题二叉树逆向 正常递归建立树的代码为&#xff1a; VOID BinaryTree::BuildTree(Tree*& root) {cout << "输入-1即结束" << endl;INT Val 0;cin >> Val;if (Val -1)return;root new Tree(Val);cout << "请输入" &l…

FSMC—扩展外部SRAM

一、SRAM控制原理 STM32控制器芯片内部有一定大小的SRAM及FLASH作为内存和程序存储空间&#xff0c;但当程序较大&#xff0c;内存和程序空间不足时&#xff0c;就需要在STM32芯片的外部扩展存储器了。STM32F103ZE系列芯片可以扩展外部SRAM用作内存。 给STM32芯片扩展内存与给…

基于云平台技术的自动泊车浅谈

基于云平台技术的自动泊车浅谈 一、引言 自动泊车技术是当前汽车技术的重要发展方向之一&#xff0c;它能够帮助驾驶员自动完成泊车操作&#xff0c;提高驾驶安全性。基于云平台技术的自动泊车创新&#xff0c;将为自动泊车技术的发展带来新的突破。 二、云平台技术概述 云…

【计算机网络】TCP原理 | 可靠性机制分析(一)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程、计算机网络的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目…

sensor 点亮出图后,画面全黑是为什么?

同事在点一个思特威的 sensor sc035hgs&#xff0c;这个 sensor 主要负责数据采集&#xff0c;然后给到后面的 NN&#xff08;神经网络&#xff09;去做处理。 点亮出图后&#xff0c;画面很黑&#xff0c;如下图所示&#xff1a; 因为没拿到板子&#xff0c;只能盲猜&#xf…

Python 注释的方法

在Python中&#xff0c;有两种常见的注释方法&#xff1a; 单行注释&#xff1a;使用#符号来注释一行代码。在#符号后面的内容将被视为注释&#xff0c;不会被解释器执行&#xff0c;如&#xff1a; # 这是一个单行注释 print(hello world!) # 打印字符串多行注释&#xff1…

面试官:说说HashMap和HashTable的区别

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…

与CSDN相识的第一年

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

算法日志的存在核心在于搭建自检系统

"相信每一个人执行与日志有关的任务都会遇到这样难题吧&#xff1f;长达几万行的日志&#xff0c;如果我们单纯用肉眼去一个个排查&#xff0c;那么恐怕所耗费的时间是以天为计量单位了。当然这是一种比较夸张的情况&#xff0c;根据我的项目经验&#xff0c;正常情况是十…

每日一博 - 多租户技术及其三种数据存储策略

文章目录 概述应用程序隔离数据隔离小结 概述 多租户技术&#xff08;Multi-Tenant Technology&#xff09;是软件即服务&#xff08;SaaS&#xff09;架构中的一项核心技术&#xff0c;允许单一软件应用或服务同时服务于多个客户&#xff08;即“租户”&#xff09;&#xff…

作为产品经理,如何分析和管理产品需求?

实际工作中&#xff0c;需求分析和需求管理能力是产品经理的基础能力&#xff0c;那么该如何进行需求分析和管理呢&#xff1f; 需求分析阶段的核心可以总结为两句话&#xff1a;“这个需求能不能做&#xff1f;做成什么样&#xff1f;”。 一、需求收集 需求收集环节需要针…

软件测试|Python函数参数之必传参数、默认参数、可变参数、关键字参数的详细使用

在Python中&#xff0c;函数参数是定义在函数头部的变量&#xff0c;用于接收传递给函数的数据。Python函数参数有四种类型&#xff1a;必传参数、默认参数、可变参数和关键字参数。每种类型都有不同的使用方式和适用场景。本文将详细介绍这四种函数参数的使用方法。 Python函…

ArkTS - 网络请求

一、Axios请求 应用通过HTTP发起一个数据请求&#xff0c;支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。 前端开发肯定都使用过一个叫axios的第三方库&#xff0c;它是是一个基于 promise 的网络请求库&#xff0c;可以用于浏览器和 node.js&…

关于曲率、曲率半径和曲率圆,看这几篇文章就够啦

关于曲率、曲率半径和曲率圆的内容&#xff0c;是考研数学数学一和数学二大纲中明确要求掌握的内容&#xff0c;但这部分内容在很多教材教辅以及练习题中较少涉及。在本文中&#xff0c;荒原之梦考研数学网就为大家整理了曲率、曲率半径和曲率圆方程相关的概念、基础知识以及练…

LauraGPT

git&#xff1a;https://github.com/alibaba-damo-academy/FunCodec 文章目录 model archAudioTokenizermodel init model arch text-embedding 用千问的模型参数初始化&#xff1b;AudioEncoder用asr-conformer的参数初始化&#xff1b;所有的参数都参与更新&#xff0c;除了C…

实时语义分割模型PP-LiteSeg论文解读

paper&#xff1a;PP-LiteSeg: A Superior Real-Time Semantic Segmentation Model official implementation&#xff1a;https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.8/paddleseg/models/pp_liteseg.py 本文的创新点 提出了一种灵活的轻量级解码器&#xf…

Maven pom.xml 添加本地jar包依赖以及打包方法

1. 安装到本地仓库 mvn install:install-file -DfileD:\XX.jar -DgroupIdXX -DartifactIdXX -Dversion1.11 -Production -Dpackagingjar 2.dependency中指定scope"system"和本地jar包路径 &#xff08;1&#xff09;配置本地jar包依赖&#xff08;systemPath指向本…

SpringBoot+Vue轻松实现考试管理系统

简介 本系统基于 Spring Boot 搭建的方便易用、高颜值的教学管理平台&#xff0c;提供多租户、权限管理、考试、练习、在线学习等功能。主要功能为在线考试、练习、刷题&#xff0c;在线学习。课程内容支持图文、视频&#xff0c;考试类型支持考试、练习、问卷。 源码下载 网…

Linux|服务器|简单记录备忘VMware虚拟机开启桌面失败报错:VMware: No 3D enabled (0, Success).的解决

一&#xff0c; VMware虚拟机 Linux操作系统&#xff0c;centos7版本&#xff0c;安装完桌面后&#xff0c;执行startx 命令后 &#xff0c;报错&#xff1a;VMware: No 3D enabled (0, Success). 桌面没有启动成功 完整日志输出如下&#xff1a; [rootnode4 ~]# startx x…

上传自己的依赖到maven仓库 -- 保姆级复盘

上传自己的依赖到maven仓库 -- 保姆级复盘 1、准备工作1.1、安装Git1.2、将需要上传的代码先上传到Gitee中1.2.1、上传步骤1.2.2、如果出现以下错误&#xff08;主要原因是gitee中README.md文件和本地不一致&#xff0c;或者不在本地代码目录中&#xff09; 2、sonatype注册登录…