和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个元素将使用默认构造函数进行初始化。
初始化对象数组的方案是,首先使用默认构造函数创建数组元素,然后花括号中的括号函数将创建临时对象,然后将临时对象的内容复制到相对应的元素中。因此,要创建类对象数组,则这个类必须有默认构造函数。
- void Stock::show() const
- {
- cout<<"Company: "<
- <<"Shares:"<
'\n' - <<"Share Price:$"<
- <<"Total Worth:$"<
'\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指针。
-
相关阅读:
删除的照片怎么找回?教你5个好方法快速恢复
Mybatis缓存及高级映射
某银行容器云平台自动化运维体系的设计与实现
【设计模式】【创建型5-2】【工厂方法模式】
IDEA的乱码与file.encoding = UTF-8
HarmonyOS/OpenHarmony原生应用-ArkTS万能卡片组件Toggle
VIM插件安装与配置
nginx源码层面探究request_time、upstream_response_time、upstream_connect_time与upstream_header_time指标具体含义
JBoss漏洞之反序列化漏洞
ChatRule:基于知识图推理的大语言模型逻辑规则挖掘11.10
-
原文地址:https://blog.csdn.net/m0_73671341/article/details/133439798