C++类成员和数据成员初始化总结

【漏洞修复】Diffie-Hellman Key Agreement Protocol 资源管理错误漏洞(CVE-2002-20001) Diffie-Hellman Key Agreement Protocol 存在安全漏洞,远程攻击者可以发送实际上不是公钥的任意数字,并触发服务器端DHE模幂计算。 阅读详情

C++为类中提供类成员的初始化列表
类对象的构造顺序是这样的:
1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员
2.进入构造函数后在构造函数中执行一般计算
1.类里面的任何成员变量在定义时是不能初始化的。
2.一般的数据成员可以在构造函数中初始化。
3.const数据成员必须在构造函数的初始化列表中初始化。
4.static要在类的定义外面初始化。
5.数组成员是不能在初始化列表里初始化的。
6.不能给数组指定明显的初始化。
这6条一起,说明了一个问题:C++里面是不能定义常量数组的!因为3和5的矛盾。这个事情似乎说不过去啊?没有办法,我只好转而求助于静态数据成员。
到此,我的问题解决。但是我还想趁机复习一下C++类的初始化:
1.初始化列表:CSomeClass::CSomeClass() : x(0), y(1){}
2.类外初始化:int CSomeClass::myVar=3;
3.const常量定义必须初始化,C++类里面使用初始化列表;
4.C++类不能定义常量数组。

关于const,复习一下常量指针:
如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。

 

在C++类中,必须做如下事情:

1.必须对任何const或引用类型成员以及没有默认构造函数的 类 类型 的任何成员 显示地使用初始化列表进行初始化

2.类成员在定义时是不能被初始化的。

3.类的成员初始化顺序与成员变量在构造函数中的位置选后顺序无关,至于成员变量在类中定义的先后顺序有关。

所以下面的例子是错的:
1 class x
2
3 {
4   int i;
6   int j;
7
8 public :
9   x( int value):j(value),i(j)
10   {
11   }
12 }

 

对与上面的code,因为i先被初始化(i相对于j先定义的)而在i初始化时,j并没有被初始化,故执行出现问题了。

 

【ESP32摄像头开发实例】-视频流接入Home Assistant 在这个项目中,我们将使用ESP32-CAM板构建一个IP监控摄像头。ESP32摄像头将托管一个视频流媒体网络服务器,您可以使用网络中的任何设备进行访问。 阅读详情

相关推荐

二阶锥松弛在配电网最优潮流计算中的应用(IEEE33节点配电网最优潮流算例matlab程序)(yalmip+cplex)

文献[7]建立了以支路潮流计算为基础的OPF模型,针对OPF中的非凸性约束,采用SOCR技术将其松弛为二阶锥约束,整个 OPF 模型则被转化为二阶锥规划( Second Order Cone Programming,SOCP)问题,对其求解可以得到全局最优解。其次结合辐射型配电网潮流特点建立支路潮流约束,并考虑配电网中的可控单元,包括分布式电源和离散、连续无功补偿装置,建立其出力约束,该模型为非凸非线性模型;式中,αj,t和βij,t分别为t时段内节点i电压的二次方和支路ij电流的二次方。

weixin_47365903的博客 1万+

C++中数组定义及初始化

一、一维数组 静态 int array[100];   定义了数组array,并未对数组进行初始化 静态int array[100] = {1,2};  定义并初始化了数组array 动态int* array = new int[100]; delete []array;  分配了长度为100的数组array 动态int* array = new int[100...

Clair1024的博客 6108

DreamerV3实战:如何用世界模型在Minecraft中自动挖钻石(附完整训练流程)

本文详细介绍了如何使用DreamerV3世界模型在Minecraft中训练AI智能体自动完成挖钻石的复杂任务。文章深入分析了该任务对强化学习的挑战,提供了从环境配置、模型训练到结果评估的完整实战流程,并分享了关键的调优技巧与问题解决方案,展示了基于模型的强化学习在解决稀疏奖励问题上的强大能力。

weixin_29050271的博客 192

C++创建初始化二维数组并输出(某大学作业)

给一个二维数组的第一行输入6个数,假设为给定的二维数组,6*6方阵(某大学C++作业)

qq_58619891的博客 1353

思科模拟器CIsco Packet Tracer利用三层交换机实现VLAN间路由

版权声明:如果对大家有帮助,大家可以自行转载的。 1.技术原理: 三层交换机具备网络层的功能,实现 VLAN 相互访问的原理是:利用三层交换机的路由功能,通过识别数据包的 IP 地址,查找路由表进行选路转发,三层交换机利用直连路由可以实现不同 VLAN 之间的相互访问。三层交换机给接口配置 IP 地址。采用 SVI(交换虚拟接口)的方式实现 VLAN 间互连。SVI 是指为交换机中的VLAN 创建...

qq_37992321的博客 1万+

程序化广告行业(2/89):从程序化广告深挖数据处理技巧

大家好!我一直希望能和大家在技术学习的道路上携手共进,这也是我写这一系列博客的初衷。上次我们一起学习了Python基础的数据处理知识,这次咱们借助一本程序化广告手册,深入挖掘数据处理的更多技巧。这本手册涵盖了程序化广告从概念到技术实现的诸多方面,而其中处处都涉及到数据处理,相信会给我们带来不少收获

yyy173611的博客 4572

C++数组成员的初始化

C++里如果将数组定义成类中的成员,将面临初始化的问题. 如下: Class A{public:    A();    ~A(){};     int abc[3];} 很直观的想法是 A::A(): abc({1,2,3}){ } 很遗憾,你将见到编译提示语法错误 当然这里可以采用变通方法 A

我的程序世界 8527

agv调度系统3.0技术介绍

agv调度系统,穿梭车调度系统,调度系统技术介绍,教你做调度

持续分享调度系统开发过程 4869

C++ 使用类实现数组的输入、输出、排序、求和

【代码】C++ - 使用类实现数组的输入、输出、排序、求和。

欢迎来到斛XX的博客 2307

人工智能面试总结-Python

B站:啥都会一点的研究生 公众号试读:啥都会一点的研究生 目录说说Python程序运行过程?说说Python的作用域?说说Python的数据结构?说说Python中可变与不可变类型?说说进程与线程?说说Python中的多线程?说说Python中的多进程?说说Python互斥锁与死锁?说说Lambda?说说Python的深拷贝与浅拷贝?说说Python多线程是否能用多个CPU,为什么?说说Python垃圾回收机制?说说Python里的生成器?说说迭代器与生成器的区别?说说Python 列表的 del,rem.

啥都生的博客 1万+

手把手教你ensp仿真搭建校园网(含防火墙及无线网络)系列(一)校园网核心交换机配置

本系列博客将带你从零开始,使用 华为 eNSP(Enterprise Network Simulation Platform) 仿真搭建一个完整的校园网络,涵盖 核心层、汇聚层、接入层、防火墙安全策略、无线AC+AP组网 等实战场景。无论你是网络初学者还是希望深化实战经验的工程师,都能通过本教程掌握企业级网络的规划、配置与排错技巧。

echo的博客 3798

C++数组

C++数组一、数组的定义和读写1.什么是数组2.定义数组2.1 定义方式2.2 下标3.使用数组1. 操作三种定义方式 一、数组的定义和读写 1.什么是数组 数组:一块连续存储相同数据类型的空间。 2.定义数组 2.1 定义方式 常见的三种定义方式: 定义长度的方式:数据类型 数组名[ 数组长度 ]; 例:int arr1[5]; 定义长度和值方式:数据类型 数组名[ 数组长度 ] = { 值1,值2 …}; 例: int arr2[5] = { 1,2,3,4,5 }; 定义值方式:数据类型 数组名[

m0_56945138的博客 2252

SFT看这一篇就够了!万字长文:监督微调(Supervised Fine-Tuning, SFT)技术全解析【从理论到实战】

大家好,我是大 F,深耕AI算法十余年,互联网大厂技术岗。分享AI算法干货、技术心得。欢迎关注,一起探索技术的无限可能!

大F子的智能小课 712

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

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

qfturauyls的博客 1887

STM32F407中文手册

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

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C++学习笔记12:类成员初始化等问题

类中嵌套结构或类声明,类的成员初始化列表,类成员的类内初始化,避免复制构造函数和执行深度复制的 赋值运算符被调用的方法

Seawood_Xie的博客 454

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

类的数据成员是类对象或常量

1、类的数据成员是类对象 对一个类的对象成员进行初始化 #include<iostream> using namespace std; class lei1 { private: int xx; public: lei1(int dt){ xx=dt; } void disp(){ cout<<"class lei1 private data is:"&lt...

qq_42717239的博客 1789

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

static类成员

static类成员包括:static数据成员,static数据函数。      同全局对象相比,static成员有以下优点 (1)static成员的名字是在类的作用域中,因此可避免与其他类的成员或全局对象的名字冲突 (2)可以实施封装。static成员可以是私有成员,而全局对象不可以。 (3)通过阅读程序容易看出,static成员适于特定类关联。这种可见性可清晰地显式程序员的意图。

longneicool的专栏 547

GeekForGeeks 何时在c++中使用初始化列表

When do we use Initializer List in C++? Initializer List is used to initialize data members of a class. The list of members to be initialized is indicated with constructor as a comma separate

fzzying3的专栏 735
上一篇: 论c++构造函数中的不合理设计
下一篇: 背单词的五大诀窍
BlueSy2008
博客等级 码龄20年 26粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值