本文主要是介绍C++语言导学 第一章 基础知识 - 1.5 作用域和生命周期,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
第一章 基础知识
1.5 作用域和生命周期
声明语句将一个名字引入到一个作用域中:
- 局部作用域(local scope):声明在函数或者lambda内的名字称为局部名字(local name)。局部名字的作用域从声明它的地方开始,到声明语句所在的块的末尾为止。块(block)用花括号{}限定边界。函数参数的名字也属于局部名字。
- 类作用域(class scope):如果一个名字定义在一个类中,且位于任何函数、lambda或enum class之外,则称之为成员名字(member name),或类成员名字(class member name)。成员名字的作用域从包含它的声明的起始{开始,到该声明结束为止。
- 名字空间作用域(namespace scope):如果一个名字定义在一个名字空间内,同时位于任何函数、lambda、类或enum class之外,则称之为名字空间成员名字(namespace member name)。它的作用域从其声明位置开始,到名字空间结束为止。
声明在所有结构之外的名字称为全局名字(global name),我们称其位于全局名字空间(global namespace)中。
此外,对象也可以没有名字,比如临时对象或者用new创建的对象。例如:
vector<int> vec; //vec是全局的(一个全局整型向量)
struct Record{
string name; //name是Record的一个成员(一个字符串类型的成员)
//...
};
void fct(int arg) //fct是全局的(一个全局函数)
//arg是局部的(一个整型参数)
{
string motto{“Who dares wins”}; //motto是局部的
auto p = new Record{“Hume”}; //p指向一个未命名的Record(用new创建的)
}
我们必须先构造(初始化)对象,然后才能使用它,对象在作用域的末尾被销毁。对于名字空间对象来说,它的销毁点在整个程序的末尾。对于成员来说,它的销毁点依赖于它所属对象的销毁点。用new创建的对象一直“存活”到delete销毁了它为止。
这篇关于C++语言导学 第一章 基础知识 - 1.5 作用域和生命周期的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!