我很好奇,在类构造函数中声明的变量范围是什么,它们不是该类的数据成员?
例如,如果构造函数需要迭代int i
,那么在构造函数完成后是否会销毁此变量,或者它是否为程序的全局变量?
从这个意义上讲,构造函数就像任何其他函数一样 - 任何在里面声明的变量都有通常的范围限制,并且它们肯定会超出范围并在构造函数完成后被销毁.
像任何其他函数一样,如果它是局部变量,它将在函数末尾被"销毁".本地范围.
正如经常发生的那样,你可能会混淆范围和生命周期的概念,所以我将解决这两个问题.
的范围构造内声明的名称的相同的任何本地名称的范围(事实上,它是一个构造没有差别任何):名称的范围延伸到其中的名称是该块的端声明(并且当名称被一个具有相同名称的"更本地化"的声明隐藏时,它可以有"漏洞" ).
在构造函数中定义的am对象的生命周期由与任何本地定义的对象的生命周期相同的规则控制(事实上它是构造函数没有任何区别):具有自动存储持续时间的对象在末尾被销毁.它的范围,而具有静态存储持续时间的对象永远存在.