![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深入了解c++
文章平均质量分 50
村子里的设计师
这个作者很懒,什么都没留下…
展开
-
C++ 深入理解 Public, Private, Protect
一文看懂C++ public, private, protect =>原创 2023-05-21 15:03:51 · 164 阅读 · 1 评论 -
C++ 警惕 头文件中的static变量
如果说 全局变量“不受时间和空间限制”,那static变量是“不受时间限制,但受空间限制”。“不受时间限制”是指到程序运行结束时才释放,“受空间限制”是指 仅能在特定的作用域中使用。头文件中的全局变量,可以被引用该头文件的源文件共享;而头文件中的static变量,不能被引用该头文件的源文件共享,这些源文件中的同名static变量彼此独立。下面是一个代码示例。照此理解,应优先考虑使用static变量而非全局变量,前者“权限”更小,更安全。原创 2023-05-21 15:02:32 · 211 阅读 · 1 评论 -
理解c++中的声明和定义
我们经常说的判断语句,如“它是一只猫”,其实包含着“它存在”这一前提。我理解的“声明”是为了说明“它存在”,而“定义”是为了说明“它是什么”。这与程序的编译运行过程有关。编译过程更关心“是否被声明”,而链接,运行过程更关心“是否被定义”。比如我说“请给我拿杯水”,服务员首先考虑“世界上确实存在水”,再考虑“在哪儿可以得到水”。假如“请给我拿杯水”是程序指令,那编译过程只关心“是否已声明水,水是否存在”,而链接,运行过程则关心“是否定义了水,水在哪儿”。原创 2023-05-21 15:00:09 · 86 阅读 · 1 评论 -
C++ extern:必须使用extern的场景
test1.cpp 和 test2.cpp 中都引用了test.h,test1.o和test2.o中都有 kVar 的符号定义,所以在链接时才会报重复定义的错误。解决此问题要在test.h中声明 kVar,且仅在一个.cpp文件中定义kVar,确保kVar仅被定义一次。即使不使用extern,在头文件中定义的全局变量,也可以被引用了该头文件的外部源文件使用。一开始提到的困惑是 “即使不使用extern,在头文件中定义的全局变量,也可以被引用了该头文件的外部源文件使用”。只在头文件中声明,不在头文件中定义。原创 2023-05-21 14:59:03 · 148 阅读 · 1 评论