当前位置: 首页 > news >正文

构造函数

一、构造函数

构造函数用来在创建对象时初始化对象,为对象数据成员赋初始值。

类的数据成员是不能在类定义时初始化的,类定义并没有产生一个实体,而是给出了一个数据类型,不占用存储空间,无处容纳数据。

如果一个类所有的数据成员是公有的(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)在一个类中定义了带默认参数的构造函数后,不能再定义与之有冲突的重载构造函数。

一般地,不应同时使用构造函数的重载和带默认参数的构造函数。

相关文章:

构造函数

一、构造函数 构造函数用来在创建对象时初始化对象&#xff0c;为对象数据成员赋初始值。 类的数据成员是不能在类定义时初始化的&#xff0c;类定义并没有产生一个实体&#xff0c;而是给出了一个数据类型&#xff0c;不占用存储空间&#xff0c;无处容纳数据。 如果一个类…...

JS 原型与继承

本文内容学习于&#xff1a;后盾人 (houdunren.com) 一、原型对象 每个对象都有一个原型prototype对象&#xff0c;通过函数创建的对象也将拥有这个原型对象。 原型是一个指向对象的指针。 1.可以将原型理解为对象的父亲&#xff0c;对象从原型对象继承来属性 2.原型就是对象…...

解决 Oracle 数据库中表被锁问题的方案和方法

我们经常会遇到表被锁的情况&#xff0c;这可能会严重影响数据库的性能和可用性。我将与大家分享如何识别、分析和解决这些问题&#xff0c;以及如何使用特定的 SQL 查询来执行解锁操作。 了解表锁的原因 首先&#xff0c;让我们来了解一下导致表被锁的常见原因。长时间运行的…...

ORACLE行转列、列转行实现方式及案例

ORACLE行转列、列转行实现方式及案例 行转列案例方式1.PIVOT方式2.MAX和DECODE方式3.CASE WHEN和GROUP BY 列转行案例方式1.UNPIVOT方式2.UNION ALL 行转列 案例 假设我们有一个名为sales的表&#xff0c;其中包含了产品销售数据。表中有三列&#xff1a;product&#xff08;…...

AI自动驾驶

AI自动驾驶 一、自动驾驶的原理二、自动驾驶的分类三、自动驾驶的挑战四、自动驾驶的前景五、关键技术六、自动驾驶的安全问题七、AI数据与自动驾驶八、自动驾驶的AI算法总结 自动驾驶技术是近年来备受关注的热门话题。它代表了人工智能和机器学习在汽车行业的重要应用。本文将…...

思维导图在职业规划中的应用:从职业选择到职业发展的思维导图

职业规划的重要性 在我们进行职业选择的时候&#xff0c;一个有效的职业规划&#xff0c;会对我们的未来有很大的帮助作用。一个好的职业规划可以帮助我们通过认识自己的兴趣、价值观、技能以及优势&#xff0c;找到适合自己的领域。并做出合理有效的职业选择。有了明确的职业目…...

antv l7每次刷新无法加载iconFont

如图&#xff0c;只渲染出了文本&#xff0c;未渲染出iconFont 但是如果我跳转到其他页面再跳转回来(未经过刷新时)&#xff0c;可以展示出iconFont 解决&#xff1a; 查看官方源码后 找到了iconfont.tsx文件 可以看到多了一步font loaded&#xff0c; 放到项目中后再次测试&…...

28 玻尔兹曼机

文章目录 28 玻尔兹曼机28.1 模型定义28.2 梯度推导28.3 梯度上升28.4 基于VI[平均场理论]求解后验概率 28 玻尔兹曼机 28.1 模型定义 玻尔兹曼机是一张无向图&#xff0c;其中的隐节点和观测节点可以有任意连接如下图&#xff1a; 我们给其中的节点、连线做出一些定义&#…...

命令提示符之操作基础(Windows)

打开命令提示符 方法一 打开指定文件的文件夹&#xff0c;在路径栏里输入“cmd”&#xff0c;回车&#xff0c;就进入控制台了。默认路径就是指定文件夹的路径。 方法二 打开指定的文件夹&#xff0c;按住shift键&#xff0c;在空白处右击&#xff0c;在菜单栏中选择“在此处打…...

【C语言】初识C语言+进阶篇导读

✨个人主页&#xff1a; Anmia.&#x1f389;所属专栏&#xff1a; C Language &#x1f383;操作环境&#xff1a; Visual Studio 2019 版本 本篇目的是面向编程新手&#xff0c;没接触过编程的人。以及C进阶的导读。 内容是C语言重要知识点的简单解释&#xff0c;不做详解。给…...

wxWidgets学习笔记:wxListCtrl使用详解

使用案例 wxListCtrl中放21个item&#xff0c;每一行放两个item&#xff0c;每个item显示图标和名字&#xff0c;点击某个图标&#xff0c;该图标呈现响应状态并响应对应的事件 以下是使用wxListCtrl实现放置21个item&#xff0c;每一行放两个item&#xff0c;每个item显示图…...

酷炫的python日志库-loguru

Loguru是一个python的日志库&#xff0c;比logging更简单&#xff0c;好用&#xff0c;功能丰富。 GitHub - Delgan/loguru: Python logging made (stupidly) simple 安装 pip install loguru 特征 开箱即用&#xff0c;补样板没有处理程序&#xff0c;没有清理程序&#xff…...

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虚拟机的工作原理“

标题&#xff1a;深入探究JVM&#xff1a;揭秘Java虚拟机的工作原理 摘要&#xff1a;本文将深入探究Java虚拟机&#xff08;JVM&#xff09;的工作原理&#xff0c;包括JVM的架构、内存管理、垃圾回收机制以及即时编译等关键概念。通过详细解释这些概念&#xff0c;读者将能够…...

小程序的api使用 以及一些weui组件实列获取头像 扫码等

今日目标 响应式单位rpx小程序的生命周期 【重点】20%小程序框架 weui 【重点】 50%内置API 【重点】30%综合练习 1. 响应式rpx 1.1 rpx单位 rpx是微信小程序提出的一个尺寸单位&#xff0c;将整个手机屏幕宽度分为750份&#xff0c;1rpx 就是 1/750&#xff0c;避免不同手…...

海思ss928部署手写数字识别模型

大致流程--------------------------------------------------------------------------------------------------------------------- 模型转换---------------------------------------------------------------------------------------------------- 1&#xff1a;准备MNI…...

组学知识速递(五)|ChIP-seq知多少?

近段时间来&#xff0c;我们合作的ChIP-Seq技术发表的高分成功案例一篇接一篇&#xff0c;您是否心动了呢&#xff1f;本篇文章&#xff0c;总结了ChIP-Seq实验部分重点知识点&#xff0c;开启ChIP-Seq的你绝不要错过&#xff01; Q1 什么是ChIP-Seq&#xff1f; 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.创建意图 // 创建意图&#xff0c;启动MonthlyTaskServiceIntent intent new Intent(getContext(), TimeTaskService.class); // 传递数据intent.putExtra(TimeTaskService.KEY_TITLE,userRemind.getTitle());intent.putExtra(TimeTaskService.KEY_DEC,u…...

视频大模型幻觉问题解析与Dr.V框架解决方案

1. 视频大模型幻觉问题的现状与挑战在当今多模态大语言模型&#xff08;MLLMs&#xff09;快速发展的背景下&#xff0c;视频理解能力已成为衡量模型智能水平的重要指标。然而&#xff0c;一个长期困扰研究者和实践者的核心问题是&#xff1a;为什么这些看似强大的模型会在视频…...

别只盯着算力!RK3588机器人主板的I/O、ADC与通信接口,才是落地关键

别只盯着算力&#xff01;RK3588机器人主板的I/O、ADC与通信接口&#xff0c;才是落地关键 在工业机器人系统集成领域&#xff0c;开发者常常陷入"算力至上"的误区。实际上&#xff0c;真正决定项目成败的往往是那些看似平凡的接口——GPIO的响应延迟、ADC的采样精度…...

物理推理与视频模型评估:计算机视觉与物理模拟的交叉应用

1. 项目概述"物理基础推理与视频模型评估"这个项目标题看似简单&#xff0c;却蕴含了计算机视觉和物理模拟两个前沿领域的交叉应用。作为一名在计算机视觉领域深耕多年的从业者&#xff0c;我最近完成了一个类似的项目&#xff0c;今天就来分享一下其中的技术细节和实…...

Notepad++ 开发者福音:集成Hypnos-i1-8B插件实现代码注释与逻辑解释

Notepad 开发者福音&#xff1a;集成Hypnos-i1-8B插件实现代码注释与逻辑解释 1. 引言&#xff1a;代码理解的痛点与解决方案 作为一名开发者&#xff0c;你是否经常面对这样的困境&#xff1a;接手一个遗留项目&#xff0c;面对满屏没有注释的复杂代码&#xff1b;或者自己几…...

前沿趋势:GEO优化与私域的联动增长

核心观点&#xff1a;随着技术发展&#xff0c;私域增长有了新的可能。GEO&#xff08;生成式引擎优化&#xff09;与私域的联动&#xff0c;可以帮助企业更精准地挖掘目标用户需求&#xff0c;实现高效引流与转化。趋势解读&#xff1a;&#xff1a;依托AI语义优化技术&#x…...

零基础极速上手教程:30分钟用AI建站工具做出第一个网站

如果你完全不懂技术&#xff0c;对HTML、CSS、服务器这些词一头雾水&#xff0c;但又急需一个拿得出手的网站&#xff0c;这篇教程就是为你准备的。我们将抛开复杂的理论&#xff0c;用一套通用、可复制的实操步骤&#xff0c;带你体验从零到一做出一个完整网站的全过程。无论你…...

YOLO12检测结果后处理:NMS阈值调整与多框融合策略

YOLO12检测结果后处理&#xff1a;NMS阈值调整与多框融合策略 1. 引言&#xff1a;为什么检测框需要“精修”&#xff1f; 当你用YOLO12跑完一张图片&#xff0c;看到屏幕上密密麻麻的检测框时&#xff0c;是不是觉得大功告成了&#xff1f;先别急&#xff0c;这其实只是完成…...

家庭无线网络技术对比与组网优化指南

1. 无线家庭网络技术全景解析二十年前&#xff0c;当第一代Wi-Fi路由器开始进入家庭时&#xff0c;谁能想到今天的智能家居设备会如此依赖无线连接&#xff1f;作为从业十余年的网络工程师&#xff0c;我见证了从HomeRF到Wi-Fi 6的技术演进历程。本文将深入剖析四种主流无线家域…...

【智能体漫游】选错框架等于白干一年?2026 AI开发者的选型生存指南

开篇语:你以为AI应用开发最大的难题是调参?Too young too simple。最让架构师夜不能寐的,是凌晨三点对着五六个框架发呆——“我到底该用LangGraph还是CrewAI?要不要上Multi-Agent?” 一、别再靠玄学选型了:每个架构师都应该有自己的"照妖镜" 作为一个在AI老兵…...

【含最新安装包】OpenClaw 一键部署超简单,零代码零基础一看就懂

Windows 一键部署 OpenClaw 教程&#xff5c;5 分钟搞定本地 AI 智能体&#xff0c;告别复杂配置【点击下载最新安装包】 文章末尾处有官网下载安装包 核心亮点&#xff1a;零代码门槛&#xff5c;全程可视化&#xff5c;无需手动配环境&#xff5c;内置所有依赖&#xff5c;…...