C++语言导学 第一章 基础知识 - 1.5 作用域和生命周期
2021/12/17 9:19:44
本文主要是介绍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 作用域和生命周期的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享