构造函数
一、构造函数
构造函数用来在创建对象时初始化对象,为对象数据成员赋初始值。
类的数据成员是不能在类定义时初始化的,类定义并没有产生一个实体,而是给出了一个数据类型,不占用存储空间,无处容纳数据。
如果一个类所有的数据成员是公有的(public),则可以在定义对象时对数据成员进行初始化。
C++提供了构造函数(constructor)来处理对象的初始化问题。构造函数是类的一种特殊成员函数,不需要人为调用,而是在建立对象时自动被执行。
C++规定构造函数的名字与类的名字相同,并且不能指定返回类型。
#include <iostream>using namespace std;class Cuboid{
public:Cuboid(int l, int h, int d);int volume(){return length * height * depth;}
private:int length, height, depth;
};Cuboid::Cuboid(int l, int h, int d)
{length = l;height = h;depth = d;
}int main()
{Cuboid a(1, 2, 3);cout << "volume = " << a.volume() << endl;Cuboid b(10, 20, 30);cout << "volume = " << b.volume() << endl;return 0;
}
(1)构造函数是在创建对象时自动执行的,而且只执行一次,并先于其他成员函数执行。构造函数不需要人为调用,也不能被人为调用。
(2)构造函数一般声明为公有的(public),因为创建对象通常是在类的外部进行的。
(3)一般不提倡在构造函数中加入与初始化无关的内容。
(4)每个构造函数应该为每个数据成员提供初始化。
与普通函数一样,构造函数具有函数名、形参列表和函数体。与其他函数不同的是,构造函数可以包含一个构造函数初始化列表:

#include <iostream>
using namespace std;
class Cuboid{public:Cuboid(int l, int h, int d);int volume(){return length * height * depth;}private:int length, height, depth;
};Cuboid::Cuboid(int l, int h, int d) : length(l), height(h), depth(d)
{cout << length << " " << height << " " << depth << endl;
}int main()
{Cuboid a(1, 2, 3);cout << a.volume() << endl;return 0;
}
二、构造函数的重载
#include <iostream>
using namespace std;
class Point{public:Point(){x = 0;y = 0;}Point(int a, int b): x(a), y(b){}void display(){cout << x << " " << y << endl;}private:int x, y;
};int main()
{Point m;m.display();Point n(5, 20);n.display();return 0;
}
尽管一个类中可以包含多个构造函数,但对于每一个对象来说,建立对象时只执行其中一个,并非每个构造函数都被执行。
三、带默认参数的构造函数
#include <iostream>
using namespace std;
class Point{public:Point(int a=0, int b=0) : x(a), y(b){ }void display(){cout << x << " " << y << endl; }private:int x, y;
};int main()
{Point k, m(1), n(1, 2);k.display();m.display();n.display();return 0;
}
(1)必须在类的内部指定构造函数的默认参数,不能在类外部指定默认参数。
(2)如果构造参数的全部参数都指定了默认值,则在定义对象时可以给一个或几个实参,也可以不给出实参。
(3)在一个类中定义了带默认参数的构造函数后,不能再定义与之有冲突的重载构造函数。
一般地,不应同时使用构造函数的重载和带默认参数的构造函数。
相关文章:
构造函数
一、构造函数 构造函数用来在创建对象时初始化对象,为对象数据成员赋初始值。 类的数据成员是不能在类定义时初始化的,类定义并没有产生一个实体,而是给出了一个数据类型,不占用存储空间,无处容纳数据。 如果一个类…...
JS 原型与继承
本文内容学习于:后盾人 (houdunren.com) 一、原型对象 每个对象都有一个原型prototype对象,通过函数创建的对象也将拥有这个原型对象。 原型是一个指向对象的指针。 1.可以将原型理解为对象的父亲,对象从原型对象继承来属性 2.原型就是对象…...
解决 Oracle 数据库中表被锁问题的方案和方法
我们经常会遇到表被锁的情况,这可能会严重影响数据库的性能和可用性。我将与大家分享如何识别、分析和解决这些问题,以及如何使用特定的 SQL 查询来执行解锁操作。 了解表锁的原因 首先,让我们来了解一下导致表被锁的常见原因。长时间运行的…...
ORACLE行转列、列转行实现方式及案例
ORACLE行转列、列转行实现方式及案例 行转列案例方式1.PIVOT方式2.MAX和DECODE方式3.CASE WHEN和GROUP BY 列转行案例方式1.UNPIVOT方式2.UNION ALL 行转列 案例 假设我们有一个名为sales的表,其中包含了产品销售数据。表中有三列:product(…...
AI自动驾驶
AI自动驾驶 一、自动驾驶的原理二、自动驾驶的分类三、自动驾驶的挑战四、自动驾驶的前景五、关键技术六、自动驾驶的安全问题七、AI数据与自动驾驶八、自动驾驶的AI算法总结 自动驾驶技术是近年来备受关注的热门话题。它代表了人工智能和机器学习在汽车行业的重要应用。本文将…...
思维导图在职业规划中的应用:从职业选择到职业发展的思维导图
职业规划的重要性 在我们进行职业选择的时候,一个有效的职业规划,会对我们的未来有很大的帮助作用。一个好的职业规划可以帮助我们通过认识自己的兴趣、价值观、技能以及优势,找到适合自己的领域。并做出合理有效的职业选择。有了明确的职业目…...
antv l7每次刷新无法加载iconFont
如图,只渲染出了文本,未渲染出iconFont 但是如果我跳转到其他页面再跳转回来(未经过刷新时),可以展示出iconFont 解决: 查看官方源码后 找到了iconfont.tsx文件 可以看到多了一步font loaded, 放到项目中后再次测试&…...
28 玻尔兹曼机
文章目录 28 玻尔兹曼机28.1 模型定义28.2 梯度推导28.3 梯度上升28.4 基于VI[平均场理论]求解后验概率 28 玻尔兹曼机 28.1 模型定义 玻尔兹曼机是一张无向图,其中的隐节点和观测节点可以有任意连接如下图: 我们给其中的节点、连线做出一些定义&#…...
命令提示符之操作基础(Windows)
打开命令提示符 方法一 打开指定文件的文件夹,在路径栏里输入“cmd”,回车,就进入控制台了。默认路径就是指定文件夹的路径。 方法二 打开指定的文件夹,按住shift键,在空白处右击,在菜单栏中选择“在此处打…...
【C语言】初识C语言+进阶篇导读
✨个人主页: Anmia.🎉所属专栏: C Language 🎃操作环境: Visual Studio 2019 版本 本篇目的是面向编程新手,没接触过编程的人。以及C进阶的导读。 内容是C语言重要知识点的简单解释,不做详解。给…...
wxWidgets学习笔记:wxListCtrl使用详解
使用案例 wxListCtrl中放21个item,每一行放两个item,每个item显示图标和名字,点击某个图标,该图标呈现响应状态并响应对应的事件 以下是使用wxListCtrl实现放置21个item,每一行放两个item,每个item显示图…...
酷炫的python日志库-loguru
Loguru是一个python的日志库,比logging更简单,好用,功能丰富。 GitHub - Delgan/loguru: Python logging made (stupidly) simple 安装 pip install loguru 特征 开箱即用,补样板没有处理程序,没有清理程序ÿ…...
html根据图片变换背景色
html根据图片变换背景色 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.item {width: 50%;height: 80vh;margin: 0 auto;border: 1px solid red;}</style> </head><body>…...
“深入探究JVM:揭秘Java虚拟机的工作原理“
标题:深入探究JVM:揭秘Java虚拟机的工作原理 摘要:本文将深入探究Java虚拟机(JVM)的工作原理,包括JVM的架构、内存管理、垃圾回收机制以及即时编译等关键概念。通过详细解释这些概念,读者将能够…...
小程序的api使用 以及一些weui组件实列获取头像 扫码等
今日目标 响应式单位rpx小程序的生命周期 【重点】20%小程序框架 weui 【重点】 50%内置API 【重点】30%综合练习 1. 响应式rpx 1.1 rpx单位 rpx是微信小程序提出的一个尺寸单位,将整个手机屏幕宽度分为750份,1rpx 就是 1/750,避免不同手…...
海思ss928部署手写数字识别模型
大致流程--------------------------------------------------------------------------------------------------------------------- 模型转换---------------------------------------------------------------------------------------------------- 1:准备MNI…...
组学知识速递(五)|ChIP-seq知多少?
近段时间来,我们合作的ChIP-Seq技术发表的高分成功案例一篇接一篇,您是否心动了呢?本篇文章,总结了ChIP-Seq实验部分重点知识点,开启ChIP-Seq的你绝不要错过! Q1 什么是ChIP-Seq? ChIP-Seq即染…...
2308C++内存序概略
参考 释放:在释放前的任意读写操作不能放在此操作之后. 获取:在获取后的任意读写操作不能放在此操作之前. 放松:只保证本操作的原子性,一般用于统计. 消费:在加载后的依赖本原子变量的,都不能重排在本操作之前. 获取释放:获取释放 序列一致,完全一致....
【C++】string的使用
1、string的使用 #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include<string> using namespace std;void Test1() {string s1;string s2("hello");cin >> s1;cout << s1 << endl;//strcat【字符串拼接】string ret1 s…...
Android 周期任务
AlarmManager使用 1.创建意图 // 创建意图,启动MonthlyTaskServiceIntent intent new Intent(getContext(), TimeTaskService.class); // 传递数据intent.putExtra(TimeTaskService.KEY_TITLE,userRemind.getTitle());intent.putExtra(TimeTaskService.KEY_DEC,u…...
视频大模型幻觉问题解析与Dr.V框架解决方案
1. 视频大模型幻觉问题的现状与挑战在当今多模态大语言模型(MLLMs)快速发展的背景下,视频理解能力已成为衡量模型智能水平的重要指标。然而,一个长期困扰研究者和实践者的核心问题是:为什么这些看似强大的模型会在视频…...
别只盯着算力!RK3588机器人主板的I/O、ADC与通信接口,才是落地关键
别只盯着算力!RK3588机器人主板的I/O、ADC与通信接口,才是落地关键 在工业机器人系统集成领域,开发者常常陷入"算力至上"的误区。实际上,真正决定项目成败的往往是那些看似平凡的接口——GPIO的响应延迟、ADC的采样精度…...
物理推理与视频模型评估:计算机视觉与物理模拟的交叉应用
1. 项目概述"物理基础推理与视频模型评估"这个项目标题看似简单,却蕴含了计算机视觉和物理模拟两个前沿领域的交叉应用。作为一名在计算机视觉领域深耕多年的从业者,我最近完成了一个类似的项目,今天就来分享一下其中的技术细节和实…...
Notepad++ 开发者福音:集成Hypnos-i1-8B插件实现代码注释与逻辑解释
Notepad 开发者福音:集成Hypnos-i1-8B插件实现代码注释与逻辑解释 1. 引言:代码理解的痛点与解决方案 作为一名开发者,你是否经常面对这样的困境:接手一个遗留项目,面对满屏没有注释的复杂代码;或者自己几…...
前沿趋势:GEO优化与私域的联动增长
核心观点:随着技术发展,私域增长有了新的可能。GEO(生成式引擎优化)与私域的联动,可以帮助企业更精准地挖掘目标用户需求,实现高效引流与转化。趋势解读::依托AI语义优化技术&#x…...
零基础极速上手教程:30分钟用AI建站工具做出第一个网站
如果你完全不懂技术,对HTML、CSS、服务器这些词一头雾水,但又急需一个拿得出手的网站,这篇教程就是为你准备的。我们将抛开复杂的理论,用一套通用、可复制的实操步骤,带你体验从零到一做出一个完整网站的全过程。无论你…...
YOLO12检测结果后处理:NMS阈值调整与多框融合策略
YOLO12检测结果后处理:NMS阈值调整与多框融合策略 1. 引言:为什么检测框需要“精修”? 当你用YOLO12跑完一张图片,看到屏幕上密密麻麻的检测框时,是不是觉得大功告成了?先别急,这其实只是完成…...
家庭无线网络技术对比与组网优化指南
1. 无线家庭网络技术全景解析二十年前,当第一代Wi-Fi路由器开始进入家庭时,谁能想到今天的智能家居设备会如此依赖无线连接?作为从业十余年的网络工程师,我见证了从HomeRF到Wi-Fi 6的技术演进历程。本文将深入剖析四种主流无线家域…...
【智能体漫游】选错框架等于白干一年?2026 AI开发者的选型生存指南
开篇语:你以为AI应用开发最大的难题是调参?Too young too simple。最让架构师夜不能寐的,是凌晨三点对着五六个框架发呆——“我到底该用LangGraph还是CrewAI?要不要上Multi-Agent?” 一、别再靠玄学选型了:每个架构师都应该有自己的"照妖镜" 作为一个在AI老兵…...
【含最新安装包】OpenClaw 一键部署超简单,零代码零基础一看就懂
Windows 一键部署 OpenClaw 教程|5 分钟搞定本地 AI 智能体,告别复杂配置【点击下载最新安装包】 文章末尾处有官网下载安装包 核心亮点:零代码门槛|全程可视化|无需手动配环境|内置所有依赖|…...
