三网合一营销型全网站,线上企业推广,国外办公室设计欣赏,seo优化的基本流程C static关键字 1、概述2、重要概念解释3、分情况案例解释3.1 static在类内使用3.2 static在类外使用案例一#xff1a;案例二#xff1a;案例三 1、概述
static关键字分为两种情况#xff1a; 1.在类内使用 2.在类外使用
2、重要概念解释
#xff08;1#xff09;翻译… C static关键字 1、概述2、重要概念解释3、分情况案例解释3.1 static在类内使用3.2 static在类外使用案例一案例二案例三 1、概述
static关键字分为两种情况 1.在类内使用 2.在类外使用
2、重要概念解释
1翻译单元原文链接 一个工程包含一个或多个翻译单元。 一个翻译单元由一个实现文件.cpp及其直接或间接包含的所有标头.h组成。
2编译与链接过程 每个翻译单元独立编译。 编译完成后链接器会将编译后的翻译单元合并到单个程序中。 详见另一篇博文
3、分情况案例解释
3.1 static在类内使用 注意点静态方法不能访问非静态变量。
3.2 static在类外使用
static在类外使用只会在该翻译单元内部查找该变量/函数符号进行链接其它翻译单元对它不可见。
案例一
例如main.cpp和add.cpp文件都有add_func函数定义但是main.cpp文件中add_func函数用static修饰只在mian.cpp的翻译单元可见链接不报错。
案例二
static.h头文件定义了var变量并在main.cpp和add.cpp文件中均引入static.h头文件链接阶段报错。 include是直接将头文件拷贝复制进来于是main.cpp文件和add.cpp文件中都有int var 10;。链接阶段链接器查找到2个相同符号于是报错。只要将头文件中var加上static修饰则2个cpp文件中的var变量均是仅自己的翻译单元可见无报错。
案例三
extern关键字是让从外部翻译单元查找变量。 如果外部翻译单元变量使用static修饰则报错找不到该变量因为static修饰让变量变成某外部翻译单元私有的本翻译单元不可见该变量。