默认构造函数

c++ 类的默认构造函数 保研之旅结束,现在可以按下心来学点以前没有时间深入学习的事情。以前为了写算法可以用c++的标准模板库,就学了c++,但是一直没有深入的学习下去,对c++的很多特性不是很熟。今天,来讲讲类的默认构造函数中的一些知识点。   首先,我创建了animal 类,代码如下: class animal{ private: int m_age; string m_sex; public: // a 阅读详情
有些C++类图书在介绍构造函数的时候会提及,当没有定义构造函数的时,编译器会提供默认的构造函数,这个函数什么事情都不做,其内容类似于"{}"的形式,但是实际情况是,编译器不会在任何情况下都提供默认的构造函数.在许多情况下,编译器并没有提供的默认构造函数,而是经过O2选项优化编译后,某些结构简单的类会被转换为几个连续定义的变量,

前面的学习过程中 我们,我们也碰到了在类对象定义过程中没有触发构造函数的情况
如下代码所示:

main反汇编代码如下所示:

在上图中,对象Init的定义处没有任何对应的汇编代码,也没有构造函数的调用过程,可见编译器并没有为其提供默认的构造函数.那么,在何种情况下编译器会提供默认的构造函数呢?

有以下2种情况:
(1)本类,本类中定义的成员对象或者父类中有虚函数存在
由于需要初始化虚表,且这个工作理应在构造函数中隐式完成,因此在没有定义构造函数的情况下,编译器会添加默认的构造函数用于隐式完成虚表的初始化工作
(2)父类或者本类中定义的成员对象带有构造函数
在对象被定义时,由于对象本身为派生类,因此构造顺序是先构造父类在构造自身,当父类中带有构造函数时,将会调用父类构造函数,而这个调用过程需要在构造函数内完成,因此编译器添加了默认构造函数来完成这个调用过程,成员对象带有构造函数的情况与此相同.

除了以上情况外,提供默认构造函数没有任何意义,只会降低程序的执行效率,因此VC++6.0没有对这种情况下的类提供默认的构造函数....
【C++】类的默认构造函数 类的默认成员函数 文章目录类的默认成员函数1. 构造函数2. 默认构造函数 1. 构造函数 初始化类 函数名与类名相同 无返回值 对象实例化时编译器自动调用对应的构造函数 构造函数可以重载 我们测试一下对象实例化时编译器自动调用对应的构造函数 #include <iostream> using namespace std; class Date { public: //含参的构造函数 Date(int year = 0, int month = 0, int day = 0) 阅读详情

相关推荐

构造函数 默认构造函数

1. 构造函数 2. 默认构造函数 用于在未提供显示初始值时创建对象并初始化,如: stock stock0; 2.1 定义默认构造函数的两种方式 给已有的构造函数的所有参数提供默认值 通过函数重载来定义——一个没有参数的构造函数 ...

sinat_28924869的博客 812

【Effective C++】构造/析构/赋值运算

文章目录一、了解C++默默编调用了哪些函数1、编译器默认调用的函数2、请记住二、若不想使用编译器自动生成的函数,就该明确拒绝1、拒绝编译器自动生成的函数2、请记住三、为多态基类声明virtual析构函数1、普通的基类的指针指向派生类的对象2、virtual析构函数的作用3、请记住四、别让异常逃离析构函数1、析构函数中发生异常有什么问题?2、请记住五、绝不在构造和析构过程中调用virtual函数1、...

青萍之末的博客 481

C++默认构造函数的问题

C++ defaul construct :缺省构造函数(默认构造函数)   定义:第一种   构造函数没有参数,即是 A()形式的   第二种   构造函数的全部参数由缺省值提供,A(int a=0,int b=0)   编译器添加的默认构造函数的条件:   如果创建一个类你没有写任何构造函数,则系统会自动生成默认的无参构造函数,函数为空,什么都不做(这只是一种情况而言,此构造函数是trival   派生类和基类的关系:   我们通常说的派生类和基类,我们调用派生类的自定义的构造函数的时候,派生类会自动调用基类中的default construct函数,而不能调用基类中的其他构造函

C++构造函数、虚函数

一:构造函数 基本构造函数: 执行过程:1)传参 2)给类数据成员开辟空间 3)执行冒号语法给数据成员初始化 4)执行构造函数括号里面的内容 例如: class Base{ public: # 冒号语法后面的内容相当于int a = 10;(初始化) Base(int var) : m_Var(var){ } private: int m_...

qq26983255的博客 1971

从逻辑门到存储阵列:NAND与NOR闪存命名与结构原理详解

在数字电路与半导体存储器领域,逻辑门是构建一切复杂功能的基础单元,其输入输出关系定义了计算与存储的基本原理。与非门(NAND)和或非门(NOR)作为通用逻辑门,其真值表和行为模式深刻影响了芯片设计。基于这些原理,现代闪存技术发展出了两种核心架构:NAND Flash和NOR Flash。这两种闪存的命名直接源于其内部存储单元阵列的连接方式,分别模拟了与非门和或非门的逻辑关系。这种结构差异决定了它们根本的技术价值:NOR Flash采用并联结构,支持快速随机读取,适用于代码存储与原地执行(XiP);而NAND

weixin_33377602的博客 339

STK中的传感器、雷达、发射机、接收机、天线

本文根据STK手册介绍了传感器、雷达、发射机、接收机、天线等对象的基本属性,简略分析了它们的不同之处。

wangyulj的专栏 1万+

VC++中复制构造函数与 CPtrArray 类

我们都知道,如果我们类中有指针成员变量,需要自己重写深层复制构造函数,来完成堆中内存的重新分配。如果类中有一个 CPtrArray 类呢?这个类只保存指向数据所在内存的指针,并不保存实际数据值。我们不能直接调用 CPtrArray::Copy 或 CPtrArray::Add 或 CPtrArray::Append 来完成拷贝,(当然更不能用 “=” ,这个类根本就没有重载等于操作符)。上面所说的

沐浴晨风想一想,今天该怎样努力;踏着夕阳问一问,今天学到了什么。 2431

NI-HIL学习开篇

自我介绍下,四年零部件厂工作经验,一年(至今)主机厂工作经验,负责BMS/VCU方向软硬件测试。 学习目的:把握新能源汽车的测试发展趋势,顺应历史的洪流。 学习目标:1.掌握HIL开发测试流程中的IO配置、开环验证、闭环模型开发及调试、自动化测试 2.掌握第三方模型的搭建及simulink关联仿真(2019.05.21新增:需巩固练习matlab基础——2...

masonson的专栏 4177

C++学习——构造函数、析构函数

C++中有一种特殊的成员函数,它的名字和类名相同,可以有形参,但没有返回值,不需要用户显式调用(用户也不能调用),而是在创建对象时自动执行。这种特殊的成员函数就是构造函数(Constructor)。析构函数(Destructor)是一种特殊的成员函数,它的名字是在类名前面加一个符号,没有返回值,没有参数,不需要程序员显式调用(程序员也没法显式调用),而是在销毁对象时自动执行。

主要记录嵌入式学习与开发过程。 6119

CentOS7下Graylog3.0高效日志管理:从零搭建到实战应用

本文详细介绍了在CentOS7操作系统上从零开始搭建Graylog3.0日志管理平台的完整过程。内容涵盖Java环境准备、MongoDB与Elasticsearch依赖安装、Graylog Server核心配置,并实战演示了通过Graylog Sidecar集中管理日志采集器以及配置邮件告警功能,为中小型团队提供了一个比ELK更轻量、易维护的一体化日志解决方案。

weixin_29207149的博客 85

PLL锁相环性能上不去?可能是电荷泵的电流失配在捣鬼(附Jae-Shin Lee经典方案解析)

本文深入分析了PLL锁相环性能瓶颈的根源——电荷泵电流失配问题,详细解析了Current Mismatch和Current Deviation的区别及其对系统的影响。重点介绍了Jae-Shin Lee的多级电流镜技术,该方案通过运放构建虚拟短路和四级电流镜结构,显著降低了电流失配,使参考杂散改善15dB以上。文章还提供了从仿真到流片的完整优化流程,帮助工程师系统解决电荷泵性能问题。

weixin_30684743的博客 370

C++构造函数

1 构造函数的定义及特征 构造函数是类的一种特殊成员函数,其主要作用是对类的成员进行初始化,保证每个类成员都有一个合适的初始值。 构造函数有以下特征: 函数名与类名一致 没有返回值 对象实例化时自动调用对应的构造函数 支持函数重载 构造函数语法:类名(){} 需要注意的是, 没有返回值和返回值为空是两码事。返回值为空指的是该函数有返回值,其中返回值为void类型。而支持重载则说明,在一个类中,可以同时存在多个构造函数。 在代码段1中,People类提供了两个构造函数,其中第一个是无参构造函数,第二个是有

乌有先生ii的博客 8279

ROS应用之如何配置RTOS满足机器人系统中的实时要求

实时操作系统(RTOS)基本概念实时操作系统(RTOS)是设计用于实时应用的操作系统,其主要目标是在确定的时间内完成任务。RTOS的任务调度算法和优先级控制机制能够确保高优先级任务按时完成。精确的传感器数据采集:传感器数据需要在规定时间内采集并传输给控制系统。快速响应外部事件:对于控制系统,需要确保指令在最短的时间内得到响应。任务的调度周期:任务的周期可以通过公式计算,其中 ftask 是任务的调度频率。优先级分配。

weixin_68094467的博客 1008

什么是默认构造函数?

对于C++默认构造函数,我曾经有两点误解: 类如果没有定义任何的构造函数,那么编译器(一定会!)将为类定义一个合成的默认构造函数。 合成默认构造函数会初始化类中所有的数据成员。 第一个误解来自于我学习C++的第一本书 《C++ Primer》,在书中392页:“只有当一个类没有定义构造函数时,编译器才会自动生成一个默认构造函数”。实际上这句话也没有说错,它说明了默认构造函数定义的必要非充分条件,然而

熊俊坤的博客 1万+

12、硬件工程师笔试面试——MOS管(2025版本)

在设计和测试过程中,可以参考相关的EMC测试标准和指南,如CE认证EMC电磁兼容测试介绍 和电磁兼容性(EMC)测试方法与整改指南 ,以及电磁兼容(EMC)的标准与测试内容 ,来确保MOSFET的EMC性能符合行业标准。在高频应用中,MOSFET的开关速度对电路的整体性能至关重要。是一款高电压同步N沟道MOSFET驱动器,具有自举电源电压至114V的能力,宽VCC电压范围,自适应贯通保护功能,以及高达1.4A的峰值顶端栅极上拉电流,适用于分布式电源架构、汽车电源、高密度电源模块和电信系统等应用。

XU157303764的博客 7090

【ComfyUI】QwenImageEdit OOTD角色与姿态匹配换装

本文介绍了一个基于Qwen Edit OOTD 2.0的ComfyUI工作流,能够实现角色与姿态匹配的智能穿搭生成。该工作流通过整合模型推理、姿态识别、图像拼接和渲染等节点,完成从角色图、姿态图到成品穿搭图的完整生成流程。核心采用Qwen Image系列模型进行图像理解和编辑,配合ControlNet进行姿态引导。用户只需提供角色图和姿态参考图,系统即可自动完成姿态解析、语义编码、采样生成等步骤,输出与输入姿态一致的穿搭图像。该方案适用于虚拟角色展示、电商试穿等场景,能保持角色特征一致的同时灵活变换姿态,显

Mr数据杨 1584

【C++】构造函数调用规则 ( 默认构造函数 | 默认无参构造函数 | 默认拷贝构造函数 | 构造函数调用规则说明 )

一、默认构造函数 1、默认无参构造函数 2、默认拷贝构造函数 二、构造函数调用规则 1、构造函数规则说明 2、代码示例 - 只定义拷贝构造函数 3、代码示例 - 只定义有参构造函数

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 6482

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C++中构造函数默认参数使用

一代码 #include <iostream> using namespace std; class Box{ public: Box(int h=2,int w=2,int l=2);//在声明构造函数时指定默认参数 int volume(); private: int height,width,length; }; Box::Box(int h,int...

实践求真知 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【C++】默认构造函数

摘要 默认构造函数(default constructor):类通过一个特殊的构造函数来控制默认初始化过程,这个函数称为默认构造函数。默认构造函数无须任何实参。 合成的默认构造函数 如果我们的类没有显示地定义构造函数,那么编译器就会为我们隐式地定义一个默认构造函数。这个由编译器创建的构造函数又称为合成的默认构造函数(synthesized default constructor) 合成的默认构造...

zzy0006的博客 4233

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C++默认构造函数

定义: 默认构造函数(default constructor)就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者为所有的形参提供默认实参的构造函数定义。如果定义某个类的变量(对象)时没有提供初始化式就会使用默认构造函数。 合成的默认构造函数 如果我们的类没有显示地定义构造函数,那么编译器就会为我们隐式地定义一个默认构造函数。这个由编译器创建的构造函数又称为合成的默认构造函数(synthesized default constructor) 合成的默认构造函数只适合非常简单的类,

居老师的博客 4797

默认构造函数和构造函数重载

本文主要总结了默认构造函数的相关用法和构造函数重载,旨在能够对平时的项目开发起到一定的夯实基本功的作用,言简意赅,一目了然。首先需要了解构造函数是用来做什么?该类对象被创建时,编译器为对象分配内存空间,并自动调用该构造函数,由构造函数完成数据成员的初始化工作。一、默认构造函数 从代码层面进行分析 class testClass { public : testClass();//不带参数的默认

syeming的编程专栏 1万+

C++关于默认构造函数和无参构造函数

C++关于默认构造函数和无参构造函数 默认构造函数 在不提供任何构造函数的情况下,编译器给出一个不带参数的,不包含代码的构造函数。 #include<iostream> using namespace std; class A { public: int val; }; int main(){ A a; //这里调用的是默认构造函数 cout<<a.val<<endl; return 0; } 当已经提供了显式的构造函数,例如:

qq_38600065的博客 8824

C++构造函数之默认构造函数

参考博客:https://blog.youkuaiyun.com/china_jeffery/article/details/79288103#commentBox 以下内容是在上述博主的博客中提炼出来的: 一、默认构造函数的含义是啥: 主要就是:默认构造函数在调用的时候不需要显示传入实参的构造函数 二、默认的构造函数的分类 1、无参构造函数:就是没有参数的构造函数 class Sample ...

Littlehero_121的博客 3228

类的默认构造函数

如果没有为一个类显式地定义任何构造函数,编译器将自动为这个类生成默认构造函数。 由编译器创建的默认构造函数称为合成的默认构造函数,它将依据如下规则初始化类中的成员变量: 1.内置数据类型的初始化 内置数据类型是否自动初始化取决于变量定义的位置。如果变量在全局作用域内定义(即不在任何函数中)或定义为静态局部变量,则这些成员将被初始化为0。如果变量在局部作用域内定义,则这些成员没有初始化。 2

菜鸟达人 1万+
上一篇: C++中的空类,默认产生哪些类成员函数
下一篇: 判断单链表是否有环,判断两个链表是否相交
eric_arrow
博客等级 码龄14年 65粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值