C++ 类和对象(7) 对象数组

        和Stock一样,用户通常要创建同一个类的多个对象。可以创建独立对象变量,就像本章前面的示例所做的,但是创建对象数组将更合适。其实声明对象的方法与声明标准类型数组相同:

Stock mysuff[4];

        当程序创建未被显式初始化的类对象时,总是调用默认构造函数。上述声明要求,这个类要么没有显式地定义如何构造函数(在此情况下,将使用不执行任何操作1的隐式默认构造函数),要么定义了一个显式默认构造函数。每个元素都是Stock对象,可以使用Stock方法:

const int STKS = 4;
Stock stocks[STKS]=
{Stock("NanoSmart",12.5,50),Stock("Boffo Object",200,2.0),Stock("Monolithic Obelisks",130,3.25),Stock("Fleep Enterprises",60,6.5)
};

        这你的代码使用标准格式对数组进行初始化:用括号括起的,以逗号分隔的值列表。其中,每次构造函数调用表示一个值。如果类包含多个构造函数,则可以对不同的元素进行不同的构造函数:

const int STKS = 10;
Stock stock[STKS] = 
{Stock{"NanoSmart",12.5,20},Stock(),Stock("Monolithic Obelisks",130,3.25)
};

        上述代码使用Stock(const string &co,long n,double pr)初始化stock[0]和stock[2],使用构造函数Stock()初始化stock[1]。由于该声明只初始化了数组的部分元素,因此余下的7个元素将使用默认构造函数进行初始化。

        初始化对象数组的方案是,首先使用默认构造函数创建数组元素,然后花括号中的括号函数将创建临时对象,然后将临时对象的内容复制到相对应的元素中。因此,要创建类对象数组,则这个类必须有默认构造函数。

        知道this指针可以更加深入的了解C++的工作方式。

例如:C++方法定义:

void Stock::show() const
{cout<<"Company: "<<company<<"Shares:"<<shares<<'\n'<<"Share Price:$"<<share_val<<"Total Worth:$"<<total_val<<'\n';
}

C风格定义:

void show(const Stock * this)
{cout<<"Company: "<<this->company<<"Shares:"<<this->shares<<'\n'<<"Share Price:$"<<this->share_val<<"Total Worth:$"<<this->total_val<<'\n';
}

Stock::限定符转换成函数参数(指向Stock的指针),然后用这个指针来访问类成员。

同样,该前段将下面的函数调用:

top.show();

转化为:

show(&top);

这样将调用对象的地址赋给了this指针。

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

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

相关文章

CCF CSP认证历年题目自练 Day15

CCF CSP认证历年题目自练 Day15 题目一 试题编号&#xff1a; 201709-1 试题名称&#xff1a; 打酱油 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 256.0MB 问题描述&#xff1a; 问题描述   小明带着N元钱去买酱油。酱油10块钱一瓶&#xff0c;商家进行促销&#xf…

【运维日常】华为云专线实现idc通过nat出网

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

04、EL和JSTL核心技术

目录 1 EL表达式&#xff08;熟悉&#xff09; 1.1 基本概念 1.2 主要功能 1.3 访问内置对象的数据 1.3.1访问方式 1.3.2 执行流程 1.4 访问请求参数的数据 1.5 访问Bean对象的属性 1.5.1 访问方式 1.5.2 主要区别 1.6 访问集合中的数据 1.7 常用的内置对象 …

C++ 类和对象 (6)this指针

一般情况下&#xff0c;类中的成员函数在操作类中的一个对象&#xff0c;用这个类去创建一个对象&#xff0c;用对象去访问类的成员函数&#xff0c;无论怎么访问或操作&#xff0c;都是一个对象。但是有的时候类的成员函数可能会涉及两个对象&#xff0c;在这种情况下需要使用…

JVM111

JVM1 字节码与多语言混合编程 字节码 我们平时说的java字节码&#xff0c; 指的是用java语言编译成的字节码。准确的说任何能在jvm平台上执行的字节码格式都是一样的。所以应该统称为:jvm字节码。不同的编译器&#xff0c;可以编译出相同的字节码文件&#xff0c;字节码文件…

Spring Security 简单token配置

Spring Security 简单token配置 说明&#xff1a;非表单配置 先上码&#xff1a; https://gitee.com/qkzztx_admin/security-demo/tree/master/demo-two 环境&#xff1a;win10 idea2023 springboot2.7.6 maven3.8.6 代码清单说明 依赖&#xff1a; <dependency><…

git 提交报错

报错提示 git -c diff.mnemonicprefixfalse -c core.quotepathfalse --no-optional-locks fetch --no-tags origin git -c diff.mnemonicprefixfalse -c core.quotepathfalse --no-optional-locks pull origin master From http://jira.suitbim.com:37990/scm/bigscreen/bigs…

通过茶叶酒水小程序商城的作用是什么?

茶叶酒水往往会在一起经营&#xff0c;同时又具备较强的送礼属性&#xff0c;需求度较高但经营商家同样不少&#xff0c;同行竞争激烈&#xff0c;加之同城生意有限、外地客户难以拓展、销售营销不足、品牌宣传效果差等痛点&#xff0c;传统酒水茶叶门店需要线上带来增长。 那…

VBA技术资料MF61:按每行指定字符数自动换行

【分享成果&#xff0c;随喜正能量】人生的旅途&#xff0c;一时的失意&#xff0c;一时的挫折&#xff0c;跌了一跤&#xff0c;不是人生的全部&#xff0c;只是人生的一个逗点&#xff0c;未来的成就、光辉&#xff0c;还有很多的虚线有待你继续去完成。。 我给VBA的定义&am…

前端适配笔记本缩放125%,150%导致页面错乱问题

由于前端在开发时使用的都是标准ui设计图&#xff0c;基本都是按照所以1920*1080&#xff0c; 而小屏幕笔记本由于分辨率高&#xff0c;所以导致的显示元素变小&#xff0c;因此很多笔记本的默认显示都是放大125%或者150%。 如果页面比较简单就让多余的空白单边扩展&#xff0c…

iOS Swift 拍照识别数字(Recognizing Text in Images)

1.苹果官方的解决方案&#xff08;推荐&#xff09; Recognizing Text in Images - apple developer Extracting phone numbers from text in images(Sample Code) - apple developer 1.1 demo下载(亲测有效) &#xff1a;recognizeTextInImage - gitee 1.2 测试成功的代码 …

碎片笔记|AIGC核心技术综述

前言&#xff1a;AIGC全称为AI-Generated Content&#xff0c;直译为人工智能内容生成。即采用人工智能技术来自动生产内容。AIGC在2022年的爆发&#xff0c;主要是得益于深度学习模型方面的技术创新。不断涌现的生成算法、预训练模型以及多模态等技术的融合引发了AIGC的技术变…

MySQL数据库与表管理《三国志》为例

在数据库管理中,一个典型的应用场景是游戏数据的存储和管理。以经典游戏《三国志》为例,该游戏具有多个角色、任务、装备等元素,如何有效地存储和管理这些数据就成为了一个问题。 本文将通过《三国志》的实例,详细解释如何在MySQL中进行数据库和表的管理。 文章目录 《三国…

深度剖析Linux磁盘分区 | LVM逻辑卷 | VDO卷 | AutoFS存储自动挂载

深度剖析Linux磁盘分区 | LVM逻辑卷 | VDO卷 | AutoFS存储自动挂载 前言说明1. 安装操作系统分区配置2. 大磁盘分区管理3. LVM逻辑卷管理3.1. 创建LVM逻辑卷3.1.1. 创建物理卷PV3.1.2. 创建卷组VG3.1.3. 创建逻辑卷LV3.1.4. 创建并挂载文件系统3.1.5. 配置开机自动挂载 3.2. 逻…

华为云云耀云服务器L实例评测|华为云上安装etcd

文章目录 华为云云耀云服务器L实例评测&#xff5c;华为云上安装etcd一、什么是etcd官方硬件建议 二、华为云主机准备三、etcd安装1. 安装预构建的二进制文件2. 从源代码构建 四、etcd服务注册与发现1. 配置etcd2. 使用systemctl 管理启动etcd服务3. 注册服务4. 发现服务 五、其…

面试题:说一下SpringBoot的自动配置原理

文章目录 引言工作原理剖析EnableAutoConfiguration自动配置生效总结 引言 不论在工作中&#xff0c;亦或是求职面试&#xff0c;Spring Boot已经成为我们必知必会的技能项。除了某些老旧的政府项目或金融项目持有观望态度外&#xff0c;如今的各行各业都在飞速的拥抱这个已经…

C# 获取磁盘空间大小的方法

方法一&#xff1a;利用System.IO.DriveInfo.GetDrives方法来获取 /// 获取指定驱动器的空间总大小(单位为B)////// 只需输入代表驱动器的字母即可 &#xff08;大写&#xff09;///public static long GetHardDiskSpace(string str_HardDiskName){long totalSize new long();…

【PHP】如何关闭buffer实时输出内容到前端

前言 默认情况下&#xff0c;我们在PHP里使用echo等函数输出的内容&#xff0c;是不会马上发送给前端的&#xff0c;原因是有 buffer 的存在&#xff0c;buffer又分两处&#xff0c;一处是PHP本身的buffer&#xff0c;另一处是Nginx的buffer。只有当buffer满了之后&#xff0c…

if条件分支计算分段函数

分别罗列x的值域区间&#xff0c;if条件跳转相应分支计算函数值。 (本笔记适合正在研学if条件分支语句的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c…

【MySQL进阶】--- 存储引擎的介绍

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】&#x1f388; 本专栏旨在分享学习MySQL的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 目录 一、什么…