C/C++教程

C++语言导学 第一章 基础知识 - 1.5 作用域和生命周期

本文主要是介绍C++语言导学 第一章 基础知识 - 1.5 作用域和生命周期,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

第一章 基础知识

  • 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 作用域和生命周期的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!