C++类中成员变量的初始化总结

C++类中成员变量的初始化总结

1. 普通的变量:

     一般不考虑啥效率的情况下 可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行。

复制代码
 1 class CA 
 2 { 
 3 public
 4      int data; 
 5 public
 6      CA(); 
 7 }; 
 8    
 9 CA::CA():data(0//……#1……初始化列表方式 
10 
11     //data = 0;//……#1……赋值方式 
12 }; 
复制代码

   

2static 静态变量: 

      static变量属于类所有,而不属于类的对象,因此不管类被实例化了多少个对象,该变量都只有一个。在这种性质上理解,有点类似于全局变量的唯一性。 

复制代码
1 class CA 
2 { 
3 public
4      static int sum; 

6 public
7     CA();  
8 }; 
9 int CA::sum=0;    //……#2……类外进行初始化 
复制代码

3const 常量变量:

     const常量需要在声明的时候即初始化。因此需要在变量创建的时候进行初始化。一般采用在构造函数的初始化列表中进行。

 

复制代码
 1 class CA 
 2 { 
 3 public
 4     const int max; 
 5 public
 6     CA(); 
 7 }; 
 8 
 9 CA::CA():max(100
10 { 
11 } 
复制代码

4Reference 引用型变量:

      引用型变量和const变量类似。需要在创建的时候即进行初始化。也是在初始化列表中进行。但需要注意用Reference类型。  

 

复制代码
 1 class CA 
 2 { 
 3 public
 4     int init; 
 5     int& counter; 
 6 public
 7     CA(); 
 8 }; 
 9 
10 CA::CA(): counter(&init) 
11 { 
12 } 
复制代码

 

5const static integral 变量:

     对于既是const又是static 而且还是整形变量,C++是给予特权的(但是不同的编译器可能有会有不同的支持,VC 6好像就不支持)。可以直接在类的定义中初始化。short可以,但float的不可以哦。

 

复制代码
 1 // 例float类型只能在类外进行初始化 
 2 // const float CA::fmin = 3.14; 
 3 class CA 
 4 { 
 5 public
 6      //static const float fmin = 0.0;// only static const integral data members can be initialized within a class 
 7     const static int nmin = 0
 8     …… 
 9 public
10    ……   
11 }; 
复制代码

总结起来,可以初始化的情况有如下四个地方:

1、在类的定义中进行的,只有const 且 static 且 integral 的变量。

2、在类的构造函数初始化列表中, 包括const对象和Reference对象。

3、在类的定义之外初始化的,包括static变量。因为它是属于类的唯一变量。

4、普通的变量可以在构造函数的内部,通过赋值方式进行。当然这样效率不高。

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

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

相关文章

今天把房子定下来了

今天同学L跟我说,今天付了定金,把买房子的事给定下了。先说下疫情这两年的房价在疫情之前,2019年那时候,深圳经历了一波房价上涨,那时候的房价上涨是我完全没有预料到的,但是在2015年房价的那一波房价上涨&…

android群英传 自定义滑动view,Android群英传学习之路-View的滑动

滑动效果是如何产生的?滑动一个View从本质上来说就是移动一个View,改变其当前的坐标。所以,想要滑动一个View,就必须监听该View的触摸事件,并且根据事件的坐标,不断的改变View的坐标从而实现View的滑动。An…

艹,正则表达式!

大家好,我是球哥,转发良许同学的一篇文章。不知道大家有没有被正则表达式支配过的恐惧?看着一行火星文一样的表达式,虽然每一个字符都认识,但放在一起直接就让人蒙圈了~你是不是也有这样的操作,比如你需要使…

Linux Centos安装步骤

在虚拟机VMware10上安装Centos系统步骤 (1)首先需要创建一个虚拟机,选择操作系统,进行一系列的硬件配置,选择Centos系统镜像 虚拟机创建完成 虚拟机创建完成后,重新启动虚拟机,就会自动开始安装CentOS系统的…

通信PK电子,谁牛?

工程师很多都有强迫症,有的是拆解强迫症,有的是排线布线强迫症,至今还记得第一堂焊电路板的课上,有同学把跳线排排焊,期末考获得了光荣的A。论起排线布线的手艺,早前,德国弱电工程师的完美布线让…

[机器视觉] SIFT特征-尺度不变特征理解

SIFT特征-尺度不变特征理解 简介 SIFT,即尺度不变特征变换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局…

harmonyos手机开发者beta,HarmonyOS 手机应用开发者 Beta 版到来,对开发者意味着什么...

北京时间12月16日,HarmonyOS手机开发者Beta活动在北京国贸开启,这场活动现场的人潮涌动也足以说明一切——用户和开发者对HarmonyOS手机应用开发者Beta版期待已久。作者 | 贾凯强头图 | 华为官方提供打破手机单设备限制,为万物互联而生在活动…

你确定不反编译 likely 看看?

大家好,我是写代码的篮球球痴,下面推荐飞哥的一篇文章,觉得对大家很有帮助,希望大家先看看再扔到收藏夹吃灰,转发不转发看大爷们心情咯!今天我给大家分享一个内核中常用的提升性能的小技巧。理解了它对你一…

看完这篇文章,会让你对电容的作用更明白!

电容是电路设计中最为普通常用的器件,是无源元件之一,有源器件简单地说就是需能(电)源的器件叫有源器件,无需能(电)源的器件就是无源器件。电容的作用和用途一般都有好多种,如:在旁路、去耦、滤波、储能方面的作用&…

华为mate40pro 升级鸿蒙,华为Mate40Pro再次曝光,麒麟9000+可升级到鸿蒙OS,这才是华为...

原标题:华为Mate40Pro再次曝光,麒麟9000可升级到鸿蒙OS,这才是华为在如今的手机市场,创新和差异化的设计已经成为消费者最在意的地方,所以加大技术创新和研发投入才是手机厂商们谋求发展的唯一道路。华为手机是一个大家…

10年深圳,回去了

十年前,2012年,我们毕业。毕业后,我们很多人都选择来深圳,那时候的想法很简单,深圳有我们想要的工作,我们很多人都是村里来的孩子,没有背景,家里也没有矿。考不上公务员也不想去做老…

android studio导入eclipse项目各种问题,Android | 导入Eclipse项目到Android studio的问题解决全过程...

D老师今天给了一个Android项目,但是他当时(2015年)用的是eclipse写的而我用的是Android studio,所以在导入项目的过程中出现了一些常见的问题,在这里总结一下解决的问题的过程。1.eclipse项目导入到Android studio的过程:File->…

蜡烛节能车模

❝简 介: 本文给出了几款使用蜡烛驱动的车模。关键词: 蜡烛,车模01 蜡烛车模1.1 蜡烛光电池点上蜡烛就能跑,DIY制作玩具汽车小模型The Energy of the Candle. Car Model[4]▲ 图1.2 蜡烛驱动的智能车模▲ 图1.1.3 光电池车模▲ …

Xen Desktop测试报告

Xen Desktop测试报告 (九叔最近写的一个测试报告,仅供参考,可能结论不适合你们公司) 目的 测试目的:本次测试周期耗时两周(2011.11.14-2011.11.24),主要为了理解思杰的桌面虚拟化&am…

Linux基础提高_系统性能相关命令

w 看系统的负载信息 用于显示已经登陆系统的用户列表,并显示用户正在执行的指令 uptime [rootlocalhost]#uptime 17:26:07 up 9:02, 3 users, load average: 0.00, 0.00, 0.00 能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为…

去广州见了我大学老师标哥

标哥是我的大学老师。标哥也是我们很多学生公认上课非常好的老师,最近标哥突然想见见我这个年轻仔,让我去广州见见他,当然,并不是说他不能来深圳,见面的时候标哥特意给我们解释了一遍,我肯定是能理解他的良…

说好的薪资统计

本来是不想把最后的统计发出来的,但是后台很多同学都想看看嵌入式的薪资,我自己也答应了会发出来,所以趁着这个假期再发一次,也让大家做个参考。不想发的原因是因为担心有别有用心的人拿这个薪资来做比较,多少会让大家…

STL面试题

http://blog.csdn.NET/tianya_team/article/details/50753759 1.说说std::vector的底层(存储)机制。 vector就是一个动态数组,里面有一个指针指向一片连续的内存空间,当空间不够装下数据时,会自动申请另一片更大的空间…

实现IButtonControl接口时, PerformClick()方法的代码怎么写,请高手指导!

在做WinForm时,想做一个像Asp.Net里的ImageButton的控件,于是自己写了一个自定义控件,名为:ImageButton,继承PictureBox类,并实现IButtonControl接口,但是实现IButtonControl接口时必须重写IBut…

【转载】 Asp.net Mvc 3当然也不会例

最快的学习方法:找到官方的教程,最好是类似Msdn演练或者冠以Step By Step的,跟着做一遍,做的过程中可以拷贝少量教程中的代码,确保每个步骤、每行代码含义都能够明白,中途随手记录一下,每个步骤…