网站核验点查询建设公司名字

diannao/2026/1/24 7:48:48/文章来源:
网站核验点查询,建设公司名字,怎样制作网站开发的进度表,做资金盘网站违法吗#x1f525;个人主页#xff1a;Quitecoder #x1f525;专栏#xff1a;c笔记仓 朋友们大家好#xff0c;本篇文章我们来到初始化列表#xff0c;隐式类型转换以及explicit的内容 目录 1.初始化列表1.1构造函数体赋值1.2初始化列表1.2.1隐式类型转换与复制初始化 1.3e… 个人主页Quitecoder 专栏c笔记仓 朋友们大家好本篇文章我们来到初始化列表隐式类型转换以及explicit的内容 目录 1.初始化列表1.1构造函数体赋值1.2初始化列表1.2.1隐式类型转换与复制初始化 1.3explicit关键字 1.初始化列表 1.1构造函数体赋值 在创建对象时编译器通过调用构造函数给对象中各个成员变量一个合适的初始值 class Date { public: Date(int year, int month, int day){_year year;_month month;_day day;} private: int _year; int _month; int _day; };虽然上述构造函数调用之后对象中已经有了一个初始值但是不能将其称为对对象中成员变量的初始化构造函数体中的语句只能将其称为赋初值而不能称作初始化。因为初始化只能初始化一次而构造函数体内可以多次赋值 1.2初始化列表 class Date { public:Date(int year,int month,int day):_year(year),_month(month),_day(day){} private:int _year;int _month;int _day; };初始化列表以一个冒号开始接着是一个以逗号分隔的数据成员列表每个成员变量后面跟一个放在括号中的初始值或表达式 那么为什么要使用初始化列表呢它的优势在哪里呢 我们来看构造函数对于下面类的初始化 class Date2 { public:Date2(int year, int month, int day) {_n10;_year year;_month month;_day day;} private:int _year;int _month;int _day;const int _n; };我们发现const成员变量并不能用函数体进行初始化 int _year; int _month; int _day;这三个成员既可以在函数体又可以在初始化列表但是类中包含以下成员必须放在初始化列表位置进行初始化 引用成员变量 const成员变量 自定义类型成员(且该类没有默认构造函数时) int _year;int _month;int _day;const int _n;我们知道这个只是一个声明定义是对象实例化时候完成的有些成员必须在定义的时候进行初始化 初始化列表中的每个元素都直接对应一个成员变量或基类允许在构造函数体执行之前对这些成员或基类进行初始化。这对于const成员变量、引用类型成员变量以及某些没有默认构造函数的类型尤其重要 Date2(int year, int month, int day) :_n(1) {_year year;_month month;_day day; }初始化列表是每个成员变量定义初始化的位置 class Date2 { public:Date2(int year, int month, int day) :_n(1){_year year;_month month;_day day;} private:int _year;int _month;int _day;const int _n; };没有在初始化列表中显式初始化_year、_month、和_day这三个成员变量它们仍然会在初始化列表阶段被默认初始化然后在构造函数体内被赋新的值 对于基本类型如int如果它们未在类的初始化列表中显式初始化则它们会进行默认初始化。对于类内的基本类型成员变量默认初始化意味着不进行初始化保留未定义值除非它们是静态存储持续时间的对象例如全局或静态变量它们会被初始化为零。然而对于自动存储持续时间如函数内的局部变量的对象如果未显式初始化则其值是未定义的。在类构造函数中成员变量的行为类似于局部变量如果不在初始化列表中显式初始化它们将不会被自动初始化 _n是通过初始化列表初始化的因为它是const类型的必须在那里初始化。而_year、_month、和_day虽然没有在初始化列表中被显式赋值但它们会在构造函数体开始执行前完成默认初始化对于基本数据类型这意味着它们的初始值是未定义的。然后在构造函数体内它们被赋予新的值 因此可以说成员变量_year、_month、和_day先经历了默认初始化在这个场景下这意味着它们的值是未定义的然后在构造函数体内被赋值 我们不妨提到前面讲的声明时给缺省值 private:int _year1;int _month;int _day;const int _n;缺省值的本质就是给初始化列表用的 Date2(int year, int month, int day) : _n(1), _year(year), _month(month), _day(day) {// 构造函数体可以留空因为所有成员变量都已经在初始化列表中初始化 }在这个版本中所有成员变量都是通过初始化列表直接初始化的这是推荐的做法特别是对于复杂类型或类类型的成员变量 引用类型必须在定义的时候初始化所以也得使用初始化列表 class A { public:A(int a0):_a(a){} private:int _a; }; class Date2 { public:Date2(int year, int month, int day,int x) :_n(1),_year(year),_month(month),_day(day),_ref(x){} private:int _year1;int _month;int _day;const int _n;int _ref;A aa; };这里aa也会走初始化列表来调用它的默认构造函数 我们可以在初始化列表来直接控制自定义类型的初始化 Date2(int year, int month, int day,int x) :_n(1),_year(year),_month(month),_day(day),_ref(x),aa(1) { }初始化列表和构造函数共同定义了类对象的初始化行为。初始化列表提供了一种高效、直接初始化成员变量和基类的方式而构造函数则完成剩余的初始化逻辑和设置比如动态开辟一个数组进行赋值的时候就用到函数体 成员变量在类中声明次序就是其在初始化列表中的初始化顺序与其在初始化列表中的先后次序无关 我们来看下面的代码 class A { public:A(int a):_a1(a),_a2(_a1){}void Print() {cout_a1 _a2endl;} private:int _a2;int _a1; }; int main() {A aa(1);aa.Print(); }这个结果是什么呢 结果是1和一个随机值 在这个例子中A类有两个整型成员变量_a1和_a2。在构造函数中_a1被初始化为传入的参数a的值而_a2被初始化为_a1的值。 然而成员变量的初始化顺序是由它们在类中声明的顺序决定的而不是它们在初始化列表中出现的顺序。在A类中_a2在_a1之前声明因此_a2会先于_a1初始化。 这意味着当_a2(_a1)执行时_a1还没有被初始化所以_a2的值是未定义的。然后_a1被初始化为1 因此当调用aa.Print();时输出的第一个值_a2的值是未定义的而第二个值_a1的值是1。在实际执行时未定义的值可能是内存中该位置的任何值这取决于编译器和运行时环境。 要修正这个问题应该按照成员变量在类中声明的顺序初始化它们或者更改成员变量的声明顺序以反映期望的初始化顺序。例如 class A { public:A(int a):_a1(a) // 现在_a1首先初始化,_a2(_a1) // 然后是_a2{}void Print() {cout _a1 _a2 endl;} private:int _a1; // 声明顺序改为先_a1int _a2; // 然后是_a2 };在这个修改后的版本中_a1会先被初始化为1然后_a2会被初始化为_a1的值即1。所以Print函数会输出1 1。 1.2.1隐式类型转换与复制初始化 我们再来看下面的类 class C { public:C(int x):_x(x){} private:int _x; }; int main() {C cc1(1);C cc2 2;return 0; }C cc2 2;为什么cc2能直接赋值呢 在C中如果一个类的构造函数只需要一个参数或所有参数除了第一个外都有默认值那么这个构造函数允许从构造函数参数类型到类类型的隐式转换。这种转换使得单个值可以被视为是该类的一个实例即使没有显式地调用构造函数 C cc1(1);这行代码直接调用了C类的构造函数使用1作为参数创建了cc1对象。 C cc2 2;这行代码演示了隐式类型转换。虽然看起来像是将整数2赋值给cc2实际上C编译器解释为使用2作为参数调用C类的构造函数来初始化cc2。这是因为C(int x)构造函数允许从int到C的隐式转换。 复制初始化是C中一种对象初始化的方式它与直接初始化有所不同但在某些情况下可以产生类似的效果。理解复制初始化对于深入理解C的对象构造和赋值语义非常重要。接下来我们将通过详细说明来解释复制初始化的概念以及为什么在某些情况下可以通过直接赋值的方式来初始化对象 复制初始化的基本概念 复制初始化通常发生在使用操作符进行对象初始化的场景中。不同于直接初始化直接调用构造函数复制初始化涉及到源对象到目标对象的潜在类型转换和赋值操作 C obj value;在上述代码中value可以是与C类型兼容的任何值或对象。复制初始化的过程如下 类型转换如果必要如果value不是C类型的对象则编译器会尝试使用value调用C的构造函数或explicit关键字修饰的构造函数除外以创建一个临时的C类型对象。这一步是隐式类型转换的一部分。 调用拷贝构造函数编译器接下来会使用这个临时对象如果第一步创建了临时对象的话作为参数调用C的拷贝或移动构造函数来初始化obj。如果源对象就是C类型并且没有发生类型转换那么这一步将直接用源对象来初始化obj。 优化在很多情况下编译器可以应用拷贝消除优化来避免真正创建临时对象和执行拷贝或移动操作直接在obj的存储位置构造对象 为什么可以直接赋值 class C { public:C(int x):_x(x){} private:int _x; };C cc2 2;这里的2是一个整型字面量不是C类型的对象。复制初始化的过程大致如下 类型转换编译器使用2调用C的构造函数创建一个临时的C类型对象。拷贝构造函数这个临时对象然后用于初始化cc2。但实际上由于优化这一步可能被省略2直接用于在cc2的位置构造C对象。 我们不妨来看看它是否调用了拷贝构造 class C { public:C(int x):_x(x){}C(const C cc){cout use copy endl;} private:int _x; };这里就被编译器优化了同一个表达式连续步骤的构造一般会被合并为一个 因此尽管代码看起来像是将2直接赋值给C类型的对象cc2实际上则是通过编译器优化直接在cc2的存储位置用2构造了一个C对象。 来看下面的代码 class C { public:C(int x):_x(x){}private:int _x; };int main() {C cc3 2;return 0; }C cc3 2;试图将一个整型字面量2赋给C类型的引用cc3。这行代码会导致编译错误原因如下 引用的基本要求在C中引用必须绑定到一个已经存在的对象上。引用本质上是对象的别名它不能像指针那样独立存在 引用与临时对象尽管临时对象如通过类型转换创建的临时C对象可以被绑定到const引用上即const C但它们不能直接绑定到非const引用C上。这是为了防止通过非const引用对临时对象进行修改因为这种修改通常没有意义临时对象在表达式结束后就销毁了。 正确的用法如果你的意图是创建一个C类型的临时对象并将其绑定到引用上正确的语法应该使用const引用如下 const C cc3 C(2); // 或者 const C cc3 2; // 依赖于C(int)构造函数的隐式类型转换这两种方式都是可行的它们创建了一个C类型的临时对象并将其绑定到const引用cc3上。由于引用是const的你不能通过cc3修改对象的状态。 要解决原代码中的问题需要确保使用const引用来引用临时对象或者创建一个非临时的C对象并将其赋给一个非const引用。例如 C cc4(2); C cc3 cc4; // cc3引用cc4在这个修正后的示例中cc4是一个非临时的C对象cc3是一个类型为C的引用它直接引用或绑定到cc4上 这个真正好处我们在后面会用到 class Stack { public:void Push(const C c){//} };比如我们想要在栈这个容器中压入c类型的对象有两种方式 Stack st; C cc3(3); st.Push(cc3);st.Push(4);直接用隐式类型转换就方便了很多 1.3explicit关键字 如果不想让隐式类型转换发生我们就需要用 explicit修饰构造函数禁止类型转换 单参构造函数没有使用explicit修饰具有类型转换作用 C11及以后版本版本支持多个参数隐式类型转换 class A { public://explicit A(int a1, int a2)A(int a1, int a2):_a1(a1),_a2(a2){}private:int _a1;int _a2; }; int main() {A aa{1,2};return 0; }不想让隐式类型转换发生可以加上explicit关键字

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

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

相关文章

想要做一个网站 该怎么做网站建设增城

1.dd命令简介功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。先用dd命令把软盘上的数据写成硬盘的一个寄存文件,再把这个寄存文件写入第二张软盘上&#xff0c…

中小型网站设计公司新媒体营销期末试卷及答案

论文真题 在信息系统的开发与建设中,分层设计是一种常见的架构设计方法,区分层次的目的是为了实现“高内聚低耦合”的思想。分层设计能有效简化系统复杂性,使设计结构清晰,便于提高复用能力和产品维护能力。一种常见的层次划分模…

电影网站开发需要多少钱电子商务市场的发展前景

Mysql的版本和存储引擎较多,为了选择最适合业务使用的系统,需要进行一定的验证,本文描述mysql的验证过程和思路。主要涉及:Mysql的版本v Mariadbv Tokudbv Oracle具体的存储引擎v Myisamv Innodbv TokuDBv Maria如下是具体的思路M…

建筑培训网站有哪些网站建设的需求分析报告

题型指引 一、选择题二、编程题 ★★写在前面★★ 本题库源自互联网,仅作为个人学习使用,记录C语言题目练习的过程,如果对你也有帮助,那就点个赞吧。 一、选择题 1、有以下函数,该函数的功能是( &#xff…

成都门户网站有哪些网线制作排序

牛客题霸 [ 环形链表的约瑟夫问题] C题解/答案 题目描述 据说著名犹太历史学家 Josephus 有过以下故事:在罗马人占领乔塔帕特后,39 个犹太人与 Josephus 及他的朋友躲到一个洞中,39 个犹太人决定宁愿死也不要被敌人抓到,于是决定…

盐城网站开发厂商做防护信息的网站

在日常使用过程中,当有时候需要运行开机自启脚本,同时想看到输出结果的时候,不免就需要将系统配置为免密登录模式,本文主要介绍再init3模式(多用户命令行界面),运行开机自启脚本及输出脚本指令运行数据结果。本文使用的…

做平面设计的网站潭州学院wordpress

Update 代码已经上传到github上了,可以点这里 Cutting 一直说这要整理一下Computer Vision课程的大作业,拖了好久。这两天忙着写一个订单处理的第三方库,陷入了僵局,所以换个口味,把大作业整理一下。 Requirement W…

土特产网站建设事业计划书电子商务外包公司

这是由National Institute of Technology Rourkela, Central University of Rajasthan发布在2022 ICETCI的论文,利用离散小波变换(DWT)得到的多分辨率域特征对1D-CNN模型进行心音分类训练。 预处理& DWT 由于FHS和各种病理声的频率范围在500hz以下[5]&#xff…

2008 做网站常用的网站开发设计语言

目录 熔断器概述 使用Sentinel工具 什么是Sentinel 微服务集成Sentinel 配置provider文件,在里面加入有关控制台的配置 实现一个接口的限流 基本概念 重要功能 Sentinel规则 流控规则 简单配置 配置流控模式 配置流控效果 降级规则 SentinelResource…

上海网站建设流app下载应用

目录 一、使用的方法 1.Hashtable哈希表 2.Hashtable哈希表的Add方法 (1)定义 (2)示例 3.XML文件的使用 二、实例 1.源码 2.生成效果 可以通过使用哈希表可以对XML文件进行查询。 一、使用的方法 1.Hashtable哈希表…

各大网站域名wordpress设置icon

对于新手卖家来说,店铺运营是头等大事。运营得当就能获取相应的收益,那么Shopee 虾皮运营的核心技巧是什么呢?今天给大家分享6⃣大核心技巧,学会了下个大卖就是你。 Shopee 虾皮运营六大核心技巧 1️⃣ 分时段上新 📌…

印刷报价网站源码下载wordpress 弹出视频播放

随着互联网的快速发展,线上小程序商城已经成为了一种流行的电商模式。对于花店来说,开发线上小程序商城不仅可以扩大销售渠道,提高销售效率,还可以增加客户粘性,提升品牌形象。下面就以花店为例,教你怎么开…

快速搭建企业网站wordpress维护页面

导言 从诞生至今,互联网已经经历了一代、二代、三代的演变。本文将深入研究这三个互联网时代的发展过程、遇到的问题、解决的过程,以及未来的可用范围,同时考察各国在互联网应用上的状况和未来的研究趋势。还将探讨在哪个方向能够取胜&#x…

网站优化内容原创宁波外贸公司为什么这么多

【两颗二叉树】【递归遍历】【▲队列层序遍历】Leetcode 617. 合并二叉树 解法1 深度优先 递归 前序解法2 采用队列进行层序遍历 挺巧妙的可以再看 ---------------🎈🎈题目链接🎈🎈------------------- 解法1 深度优先 递归 前…

自贡移动网站建设广告设计需要学什么专业

话不多说,直接上题: 当然我们可以用队列,但是其插入复杂度为N,总的复杂度为n^2,肯定会超时,于是我们可以用链表来写,同时把其存在数组中,这样节点的访问复杂度也为o(1).下面是AC代码: 下面我们来…

家居网站建设素材巅峰网站建设

文章目录 写在前面的话 切换安装源 查看包 检索包 安装特定的包 升级包 卸载包 生成冻结包 三方包的命名规则 写在后面的话 References 写在前面的话 在本章节中,我们介绍一下python最常用的一个包管理工具pip 一般来说下载我们python 的运行环境的时候在安装的时候…

免费网站空间有什么用建设银行郑州市自贸区分行网站

1.1web的基本概念 1.HTTP协议 HTTP协议(HTTP,超文本传输协议)是一个简单的请求响应协议,通常运行在TCP协议之上,该协议基于客户端/服务器模式,c/s之间是一次性的连接,每次连接只处理一个请求,服…

永嘉高端网站建设价格营销型企业网站优点

CMS简介系统基于租车业务场景而搭建的O2O服务平台,可为用户提供商务租车、接送机、旅游租车、企业租车、自驾租车、婚庆用车等自助租车服务。系统包含车辆库管理、门店管理、员工管理、司机管理、订单管理、活动管理、评价管理、财务管理、统计等。部署简介1、下载代…

建立的网站百度搜索不到友情链接发布

Eric Evans 的领域驱动设计是对软件设计领域的一次重新审视,是在面向对象语言大行其道时对数据建模的“拨乱反正”。Eric 强调了模型的重要性,例如他在书中总结了模型在领域驱动设计中的作用包括: 模型和设计的核心互相影响模型是团队所有成…

直播网站开发价格简述网站栏目管理

(1)右击“我的电脑”,选择“管理”选项,之后选择“磁盘管理”,查看自己U盘的索引,如:Disk 1(2)在运行窗口,输入cmd,回车,出现Dos运行环…