C++数组成员的初始化

[C++深入] --- 类成员初始化的三种方式 初始化列表是在构造函数冒号后对成员进行初始化,这是在成员被分配内存的同时进行的初始化操作。这样避免了成员变量先被默认构造然后再赋值的过程。 阅读详情

C++里如果将数组定义成类中的成员,将面临初始化的问题.

 

如下:

 

Class A

{

public:

    A();

    ~A(){};

 

    int abc[3];

}

 

很直观的想法是

 

A::A()

: abc({1,2,3})

{

 

}

 

很遗憾,你将见到编译提示语法错误

 

当然这里可以采用变通方法

 

A::A()

{

    for( int nLoop=1;nLoop<=3;nLoop++)

         abc[nLoop]=nLoop;

}

但假如需要初始化的是没有默认构造的对象数组又如何呢?
例如
class B
{
public:
    B(int a);
    ~B(){};
    int m_nB;
}
B::B(int a)
: m_nB(a)
{
}

Class A

{

public:

    A();

    ~A(){};

 

    B    abc[3];

}

 这时该如何初始化呢?
这里只能用变通的方法解决.

Class A

{

public:

    A();

    ~A(){};

 

    B    *abc[3];

}

A::A()
{
    abc[0] = new B(1);
    abc[1] = new B(2);
    abc[2] = new B(3);
}
当然也许是我太孤陋寡闻了,如果大家谁知道成员数组的初始化语法,恳请告知哦.
咱们一起学C++ 第一百四十八篇:之静态成员的初始化与数组应用 在C++的学习征程中,我们一路同行,共同探索这门语言的奥秘。此次,我们将深入研究静态成员的初始化规则,包括静态数据成员和静态数组的初始化,以及在不同情况下的处理方式。理解这些内容对于正确使用静态成员、确保程序的正确性和可读性至关重要。希望通过本次分享,大家能熟练掌握静态成员的初始化技巧,共同在C++的知识海洋中继续前行,共同进步。 阅读详情

相关推荐

新建静态成员数组C++

#include<iostream> #include<string> using namespace std; class staff { public: static double score1[6]; string staffname; static double score2[6]; static double score3[6]; static double ave[6]; staff(string name){staffname=name;} st

qq_45772415的博客 1142

C++中数组初始化方法

定义: int *pia = new int[10]; // array of 10 uninitialized ints 此new表达式分配了一个含有 10 个int型元素的数组,并返回指向该数组第一个元素的指针,此返回值初始化了指针pia。 在自由存储区中创建的数组对象是没有名字的,只能通过其地址间接地访问堆中的对象。 注意:C++使用new和delete在堆(自由存储区)上分配和释放动态数组。 动态数组初始化: 1. 元素只能初始化为元素类型的默认值,而不能像数组变量一...

u011555996的博客 5万+

MATLAB语言的并发编程

并发编程是指在同一程序中同时执行多个计算任务。通过将任务分解为较小的子任务,程序可以利用多核处理器的优势,提高计算效率。并发编程与并行编程密切相关,但不完全相同。并行编程强调任务的同时执行,而并发编程则侧重于任务的调度与管理,即使某些任务并没有同时执行。MATLAB的并发编程为数据分析、科学计算等应用提供了强大的支持。通过使用parforparfevalspmd等工具,用户可以轻松实现高效的并行计算。尽管MATLAB的并发编程工具相对简单易用,但在实际应用中仍需关注数据共享、通信、错误处理等问题。

2501_90485575的博客 365

C++之数据成员初始化

类数据成员的初始化,这份工作主要是构造函数负责的,构造函数的职责之一就是对数据成员进行正确初始化。实际上,构造函数的执行过程主要有两个阶段: (1)初始化阶段 (2)普通计算阶段 初始化阶段是指对数据成员的初始化主要在构造函数的初始化列表中进行。普通计算阶段是指对数据成员的初始化是在构造函数的函数体中进行。因此,初始化阶段与普通计算阶段是两个不同的概念,需要予以区分...

shenhanghanhan的博客 2915

树莓派烧录验证失败:跳过验证步骤实现成功启动的实用技巧

本文针对树莓派烧录系统时常见的验证失败问题,提供了跳过验证步骤实现成功启动的实用技巧。通过分析Windows与Linux文件系统差异导致的SD卡验证报错,指导用户在烧录完成后立即关闭验证窗口,或使用BalenaEtcher等第三方工具规避问题,确保树莓派正常启动。

yyy34的博客 949

lighttools用透镜旋转手动创建菲尼尔透镜

学过很多软件,都没有留下痕迹,很多年之后只记得学过的软件常用的一些功能,稍微难一些的再次用起需要重新学,但如果留下点痕迹,重新再用就会很快。lighttools无意之中接触了,记一点点笔记吧。...

kingsai2012的博客 4332

【C++grammar】C++类数据成员的初始化

目录1、类成员的就地初始化example2、构造函数初始化3、默认构造函数:Default Constructor4、举例5、成员的初始化方法的优先级 1、类成员的就地初始化example class S { int m = 7; // ok, copy-initializes m int n(7); // 错误:不允许用小括号初始化 std::string s{'a', 'b', 'c'}; // ok, direct list-initializes s std::strin

hanhan的博客 1313

华为云HCS解决方案笔记HUAWEI CLOUD Stack【面试篇】

华为云解决方案介绍、华为云服务介绍,华为云网络平面规划等

weixin_48375618的博客 1万+

类对象数组初始化(三种方法)

参考自《More Effective C++中文版》     类对象数组初始化参考自《More Effective C++中文版》     类对象数组初始化     如有一个如下类:     class EquipmentPiece {     private:         int IDNumber;     public:         Equipm

u012078139的专栏 2万+

华为OD机试 - 战士技能规划设计 - 数组(Python/JS/C/C++ 新系统 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。你为一款动作游戏设计战士角色的技能:战士每个技能会消耗不同能量,释放技能有 2 个约束:连续释放技能数量不能超过 m 个,技能能量总和不能超过能量上限 k;如果超过则必须中断当前技能,进入调息状态(即分段)。战士有一项爆发技巧:在单次战斗中有一次

学Java,找哪吒 234

VB.net:VB.net编程语言学习之基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的案例应用(启动SolidWorks代码/直接驱动模型代码/路径下模型驱动代码/创建两个文

VB.net:VB.net编程语言学习之基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的案例应用(启动SolidWorks代码/直接驱动模型代码/路径下模型驱动代码/创建两个文件夹对话框代码/重新生成三维图代码/导出工程图代码)之详细攻略 目录 基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的案例应用 1、调用SW的模型,并进行参数修改 1.1、VB按钮之SW的三维零件之间切换思想 1.2、调用SW 2、基础案例经验 2.1、设计SW的拉

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 3037

程序员应了解的那些事(6)C++类中的数据成员能否在定义类的时候就初始化?/类的数组不能使用成员初始化表进行初始化等

【问题1】C++类中的数据成员能否在定义类的时候就初始化?(注:在最新的C++11标准中已经支持在定义类的时候进行成员初始化。但初始化不是在编译时发生,这只是语法糖,而成员变量是在默认构造函数中初始化的) 如前所述,它是语法糖。但由于规则可能太难记住,通过一个逻辑实验来验证: struct foo { int size = 3; }; template<int N> struct experiment { enum { val = N }; }; 假设初始化发生在编译时,然

qfturauyls的博客 1887

【项目实战】YOLOV5 +实时吸烟目标检测+手把手教学+开源全部

本原创项目长期更新,旨在完成校园异常行为实时精检测,做到集成+N次开发+优化(不止局限于调包)为止,近期将不断更新以下模型+数据+标注文件+教程。关注博主,Star 一下github,一起开始美妙的目标检测之路吧~~ 文章目录本原创项目长期更新,旨在完成校园异常行为实时精检测,做到集成+N次开发+优化(不止局限于调包)为止,近期将不断更新以下模型+数据+标注文件+教程。关注博主,Star 一下github,一起开始美妙的目标检测之路吧~~一、项目展示二、项目资源共享1:训练图片:香烟图片+吸烟手势+烟雾三、

cv君的博客 13万+

C++数组对象作为成员变量的初始化

错误1: 初始化列表不支持数组下标运算, 如下错误: 错误2: 没有合适的默认构造函数,可以进行无参构造,但是可惜这个必须有参构造 错误3: 因为数组名不能作为左值,所以不可以指针传递的方式赋值。 解决办法1: 给个默认形参,然后在构造函数中初始化 需要说明的一点是既然带指针或者数组那么拷贝、赋值、析构需要格外注意 解决办法2: 让类作为指针 #### include "btest.h" BTest::BTest(ATest *tt):atest(tt) { } class BTest

西门吹雪 2571

华为OD机试 - 第k个排列 - 全排列递归(Python/JS/C/C++ 2025 C卷 100分)

给定参数n,从1到n会有n个整数:1,2,3,…,n,这n个数字共有n!按大小顺序升序列出所有排列的情况,并一一标记当n=3时,所有排列如下“123”,“132,“213”,“231”,“312”,“321”输入两行,第一行为n,第二行为k,给定n的范围是[1,9],给定k的范围是[1,n!排列为“12”和“21”,第2个是“21”。给定n和k,返回第k个排列。输出排在第k位置的数字。只有一个排列,直接返回。

学Java,找哪吒 985

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【c++程序】在数组对象中初始化成员变量

#include using namespace std; class area { public: area(int l,int w){length=l;width=w;cout<<"调用构造函数,设置长和宽:"<<length<<"\t"<<width<<endl;} ~area(){cout<<"调用析构函数释放内存,此时长和宽:"<<length<<"\t"<<width<<endl;

平凡的世界 1252

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

[C++] 如何初始化常量数组成员

今天编程时想在类中声明一个常量数组,发现无法初始化,后来在网上搜索,证明这是一个无法解决的问题。 因为根据C++语法,常量声明必须要在构造函数后用参数方式初始化,而x({1.0,2.0})又不符合语法。 只能声明成static类型,然后在源文件里定义。 // a.hclass A{private:  static const int xx[10];}

Station of GoGdizzY 5938

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C++ 中初始化数组类成员

<!-- document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData("text");

JedJia's Blog 2656

C++结构体变量的初始化和结构体char数组成员初始化

我们在定义数据时,当需要定义多个变量时,可以将多个变量定义为一个结构体。结构体变量可以作为函数的形参。例如如下函数: void function1(stuVar1 *stuIn,)

hanxiaoyong_的博客 4596

C++ 数组 1--在数组对象中初始化成员变量- 定义对象数组,并赋初值

#include &lt;iostream&gt;#include &lt;string&gt;using namespace std;/*---------------------------------    14-23在数组对象中初始化成员变量---------------------------------*/class area{public: area(int l,int w) { ...

Paulliam的博客 2379

c++ 字符数组型的静态成员的初始化

static char tmp[30]; static char *pStr;   char CStudent::tmp[30]={0}; char* CStudent::pStr=NULL;

170

类的数组成员变量的初始化

使用STL标准模板库之后,编程时已经很少使用数组和指针,相反,多使用序列容器vector代替之。 但事实并不这么理想,在迫不得已的情况下,我们还是会选择使用数组。 这里介绍一下当数组作为类的成员变量时,应该怎么对它(数组)进行初始化。 在类的构造函数中可以使用成员初始化表初始化各个成员变量,这种方法是很受推荐和赞扬的,因为使用成员初始化表中对成员进行初始化和在构造函数体中对成员赋

imxiangzi的专栏 7219

C++编程思想 第1卷 第10章 名字控制 C++中的静态成员 定义静态数据成员的存储 静态数组的初始化

静态常量变量 static const 变量,允许在一个类体中定义一个常量值,也可以 创建静态对象数组,包括const数组与非const数组\   //: C10:StaticArray.cpp // From Thinking in C++, 2nd Edition // Available at http://www.BruceEckel.com // (c) Bruce Eckel 2...

eyetired的博客 218

c++中成员函数指针数组定义和初始化方法

实际项目中经常遇到很多类似操作,比如命令码对应执行函数等,对于此类操作,比较好的方式是使用const数组,将命令码和操作函数绑定在一起,通过查表方式找到操作函数,并执行操作函数。这样可以简化代码,降低复杂度,在c中这种方式很好实现,在c++中会稍微麻烦一些。 以串口命令解析执行为例,首先定义一个结构体,定义操作函数的指针类型: struct T_ShellInfo { ...

ax446187的博客 1023

c++ 静态成员和方法(分文件来实现static成员变量和方法有几个注意的地方c++ 11)

static 成员变量是作用于整个类的,存储区是静态区,并不占用类的大小。 class AA { public: AA(int a, int b) { m_a = a; m_b = b; } int getC() { m_c++; return m_c; } //静态的成员方法 static int& getCC() { return m_c; } private: //static修饰的静态成员变量 static int m_c; int m_a;

weixin_43371635的博客 954
上一篇: 每日一故事--用人之道
下一篇: 做个小游戏吧~貌似还挺准
b2b160
博客等级 码龄20年 2408粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

b2b160

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值