1.5 作用域和生命周期
声明语句将一个名字引入到一个作用域中:
·局部作用域(local scope):声明在函数(参见1.3节)或者lambda(参见6.3.2节)内的名字称为局部名字(local name)。局部名字的作用域从声明它的地方开始,到声明语句所在的块的末尾为止。块(block)用花括号{}限定边界。函数参数的名字也属于局部名字。
·类作用域(class scope):如果一个名字定义在一个类(参见2.2节、2.3节和第4章)中,且位于任何函数(参见1.3节)、lambda(参见6.3.2节)或enum class(参见2.5节)之外,则称之为成员名字(member name),或类成员名字(class member name)。成员名字的作用域从包含它的声明的起始{开始,到该声明结束为止。
·名字空间作用域(namespace scope):如果一个名字定义在一个名字空间(参见3.4节)内,同时位于任何函数、lambda(参见6.3.2节)、类(参见2.2节、2.3节和第4章)或enum class(参见2.5节)之外,则称之为名字空间成员名字(namespace member name)。它的作用域从其声明位置开始,到名字空间结束为止。
声明在所有结构之外的名字称为全局名字(global name),我们称其位于全局名字空间(global namespace)中。
此外,对象也可以没有名字,比如临时对象或者用new(参见4.2.2节)创建的对象。例如:
我们必须先构造(初始化)对象,然后才能使用它,对象在作用域的末尾被销毁。对于名字空间对象来说,它的销毁点在整个程序的末尾。对于成员来说,它的销毁点依赖于它所属对象的销毁点。用new创建的对象一直“存活”到delete(参见4.2.2节)销毁了它为止。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access
