类构造函数析构函数

类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。

构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。

下面的实例有助于更好地理解构造函数的概念:

当上面的代码被编译和执行时,它会产生下列结果:

默认的构造函数没有任何参数,但如果需要,构造函数也可以带有参数。这样在创建对象时就会给对象赋初始值,如下面的例子所示:

当上面的代码被编译和执行时,它会产生下列结果:

使用初始化列表来初始化字段:

上面的语法等同于如下语法:

假设有一个类 C,具有多个字段 X、Y、Z 等需要进行初始化,同理地,您可以使用上面的语法,只需要在不同的字段使用逗号进行分隔,如下所示:

类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。

析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。

下面的实例有助于更好地理解析构函数的概念:

当上面的代码被编译和执行时,它会产生下列结果:

自娱、自乐

构造函数应用实例:

自娱、自乐

eric

初始化列表的成员初始化顺序:

你可能以为上面的代码将会首先做 m_y=I,然后做 m_x=m_y,最后它们有相同的值。但是编译器先初始化 m_x,然后是 m_y,,因为它们是按这样的顺序声明的。结果是 m_x 将有一个不可预测的值。有两种方法避免它,一个是总是按照你希望它们被初始化的顺序声明成员,第二个是,如果你决定使用初始化列表,总是按照它们声明的顺序罗列这些成员。这将有助于消除混淆。

eric

突然的幸福

两种不同的初始化方法结果如下:

异常初始化顺序:

正常初始化顺序:

由上面的例子可知,初始化列表的顺序要跟你在类声明的顺序要一致。否则像上面的那种特殊情况,有些变量就不会被初始化。经过测试发现,类中变量为下面的情况也是能够正常初始化的:也就是说,只要成员变量的初始化不依赖其他成员变量,即使顺序不同也能正确的初始化。

结果:

突然的幸福

冰封绝杀

改进了下上面的列子:

冰封绝杀

Jason C

一个类内可以有多个构造函数,可以是一般类型的,也可以是带参数的,相当于重载构造函数,但是析构函数只能有一个。

Jason C

yushuoqi

这里增加一个对构造函数次数的题目来加深对构造函数的理解。

题目:假定AB为一个类,则执行 ”AB a(2), b[3], *p[4];“ 语句时调用该类构造函数的次数为4次。

解析:

AB a(2) 为调用一次构造函数;

AB b[3]  代表b是AB类的对象数组,包含3个对象,因此为调用3次构造函数;

AB *p[4] 代表p是AB类的对象指针数组,包含4个类对象指针,不调用构造函数。

补充思路:

1. AB *a = new AB;  代表调用默认构造函数:

2. AB b(*a); 代表用括号中的内容*a来初始化Test类型的对象b,调用拷贝构造函数;

3. AB c; 代表定义一个AB类型的对象c,并且没有赋初值,调用默认构造函数;

4. c = a; 代表用a对象给c对象赋值,这里的赋值运算符实际上是调用了赋值构造函数。

5. AB d = a; 代表进行变量d的定义和初始化操作,虽然有赋值运算符=在,但是其实质还是初始化,并不属于赋值的范畴,因此这里调用的是复制构造函数,而非赋值构造函数。

THE END
0.[Java基础]有参构造方法和无参构造方法本文详细介绍了Java中的构造方法,包括无参构造方法和有参构造方法的概念与使用方式,并通过具体示例阐述了如何正确使用这两种构造方法。 java构造方法:有参构造方法和无参构造方法 一、无参构造方法 1、定义: 如果编写一个javaBean时没有添加无参构造方法,那么编译器会自动添加无参构造方法; jvzquC41dnuh0lxfp0tfv8mkij813:4ctvodnn4fgvgjn|4729>96A=
1.装饰装修材料与构造(十一)第十四章  墙面与柱面装饰装修构造图 墙面是室内空间中的垂直界面,墙面的装饰装修是室内设计中非常重要的内容。墙面装饰装修除对室内起美化作用外,还有保护墙体、保证室内使用等功能,如防潮、防污、防撞击和声光反射、吸声、保温、隔热等。 墙面装饰装修的基本构造包括底层、中间层、饰面层三部分。 jvzq<84l|{y/e}{0ukv0niw0et04973138268h63c::6<71rcmf0qyo
2.计算机程序的构造和解释(原书第2版)(豆瓣)《计算机程序的构造和解释》成型于美国麻省理工学院(MIT)多年使用的一本教材,1984年出版,1996年修订为第二版。在过去的二十多年里,该书对于计算机科学的教育计划产生了深刻的影响。 在第二版中,大部分重要程序设计系统都重新修改并做过测试,包括各种解释器和编译器。作者根据其后十余年的教学实践,还对其他许多细节jvzquC41dqul0mtwdct/exr1uwhkgly133:94A71
3.宇宙的构造(豆瓣)一部由 PBS 出品、极富视觉冲击力的科普巨作,一场用画面演绎和探寻宇宙终极奥秘的讲堂。从牛顿因苹果产生的力学顿悟,到爱因斯坦相对论,再到量子论,弦理论……《宇宙的构造》共四部分,取材自同名著作,作者兼物理学家 Brian Greene 和世界名校的专家学者一同为观众介绍时间、空间和宇宙的概念。 jvzquC41oq|jg7iqwdgo0lto1u{clnhv14:9;:9;8
4.[风华国乐]国乐微课堂·笙的构造正在播放[风华国乐]国乐微课堂·笙的构造 《风华国乐》 20240315 00:29:24 本期内容 [风华国乐]《春风十万里》 演奏:唐俊乔 孙艺祯 00:02:34 [风华国乐]《好春光》 演奏:云尚音乐 00:02:41 [风华国乐]《水乡小唱》 演奏:浙江歌舞剧院·彩蝶女乐 00:04:21 [风华国乐]《欢庆》 演奏:姜淼 赵勃楠 00:jvzquC41vx4de}{0eqs0497612903>4XKFK89QXIYk|7r~sN281ExF4629277xjvor
5.构造地质学研究生党团支部开展“请党放心,强国有我”系列党团日活动为充分发挥党团支部的先锋模范与带头引领作用和激发党团员更加坚定自觉地为党的事业贡献青春智慧和时代力量,近期,构造地质学研究生党支部同构造地质学博士生团支部、构造地质学硕士生团支部、2021级本科生2班团支部联合开展了“请党放心,强国有我”主题系列党团日活动。活动以党建带团建,构造地质学研究生党支部三个党jvzquC41ugyt0ypw0gjv0ls1kplp1:7451959B3jvo
6.中国石油大学(北京)克拉玛依校区石油学院2017年11月到中国石油大学(北京)克拉玛依校区任教。担任构造地质课程群负责人。主要开展构造地质学专业教学工作及前陆盆地构造模拟实验室建设工作。 工作期间主持或参加国家、中石油股份公司及自治区项目13项,承担中石油、中石化科技攻关项目4项,获得省部级奖励9项,局级奖励2项,发表论文40篇,其中第一作者(通讯作者)论文jvzquC41yy}/e~um0gjv0ls1u{~z1l4423=.3:24:1::3@870unuou
7.玉髓是什么玉髓价格玉髓和玉的区别玉石图鉴金投珠宝玉髓是隐晶质集合体,内部分子微小,肉眼观察不到,所以十分细腻,它以乳房状或钟乳状产出,常呈肾状、鈡乳状、葡萄状等。玛瑙是经常混有蛋白石和隐晶质石英的纹带状块体,常见的为同心圆构造,颜色不一,视其所含杂质种类及多寡而定,通常呈条带状、同心环状、云雾状或树枝状分布。 jvzquC41|j{ccx3epiumf7tti1tvs4e47?49A90jvsm
8.湖南科技大学资源环境与安全工程学院2003年6月毕业于长安大学构造地质学专业,获理学硕士学位。2006年6月毕业于于中科院广州地球化学研究所构造地质学专业,获理学博士学位。2006年起在湖南科技大学地质系任教,同年评为讲师,2008年任副教授,2013年晋升为教授。2009年被评为硕士生导师。主要从事构造地质学、大地构造与成矿及地质灾害等方面的研究,近年来jvzquC41|c~z0qswuv4ff~3ep1y{f€4f|iiy1sxf|1k2:kghf8<3eA97d7?g9j=9g3?13jj4584ivv