2017-5-17 C++ primer 笔记 (static和extern的区别和用法)
来源:互联网 发布:有什么育儿软件 编辑:程序博客网 时间:2024/06/14 15:54
c++primer笔记
加入光荣的进化吧
第六章! 函数
- 局部对象
- 名字有作用域, 对象有生命周期。
- 名字的作用域是程序文本的一部分,名字在其中可见
- 对象的生命周期是程序执行过程中该对象存在的一段时间。
- 形参和函数体内部定义的变量统称为==局部变量==。
- 仅在函数的作用域内可见,同时局部变量还会==隐藏==在外层作用域中同名的其它所有声明!
- 名字有作用域, 对象有生命周期。
- 局部静态对象!
- 可以使局部变量的生命周期贯穿函数调用及之后的时间。
- 方法: 将局部变量定义成static类型。
static关键字和extern关键字
- static是C++ 中常用的修饰符,它被用来控制变量的存贮方式和可见性。
- extern “C”是使C++能够调用C写作的库文件的一个手段,如果要对编译器提示使用C的方式来处理函数的话,那么就要使用extern “C”来说明。
- static关键字
- 修饰局部变量
- 一般情况下,局部变量存在栈区。并且局部变量的生命周期在该语句块执行结束时便结束了。 但如果用static修饰,该变量便存在静态数据区,其生命周期一直持续到整个程序执行结束。
- 虽然static修饰的局部变量 生命周期和存储空间发生了变化,但作用域并没有改变。仍然是一个局部变量!
- 修饰全局变量
- 对于全局变量,既可以在本源文件中被访问,也可以在同一个工程的其它源文件访问(要用extern声明)
- 但如果在本源文件中用static修饰,则在同一个工程的其它源文件中无法访问。static改变了全局变量的作用域范围。
- 修饰函数
- 情况与修饰全局变量基本一致,改变了函数的作用域!
- c++中
- 在C++中如果对类中的某个函数用static修饰,表示该函数属于一个类,而不属于此类的任何特定对象。
- 如果对类中某个变量进行static修饰,表示该变量为类及其所有的对象所有。他们在存储空间都只存在一个副本,可以通过类和对象去调用。
- extern关键字
- extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用。”
- > 其实要调用其它文件中的函数和变量,只需把该文件用#include包含进来即可,为啥要用extern?因为用extern会加速程序的编译过程,这样能节省时间。
- static关键字
- ….
- 在头文件中声明,在源文件中定义。
头文件(.h)和源文件(.cpp)都应该写什么?:
头文件(.h)
- 写类的声明(包括类里面的成员和方法的声明)、函数原型、#define常数等,但一般来说不写出具体的实现。
在写头文件时需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下):
#ifndef CIRCLE_H#define CIRCLE_H//你的代码写在这里#endif
这样做是为了防止重复编译,不这样做就有可能出错。
至于CIRCLE_H这个名字实际上是无所谓的,你叫什么都行,只要符合规范都行。原则上来说,非常建议把它写成这种形式,因为比较容易和头文件的名字对应。
- 源文件 (.cpp)
- 源文件主要写实现头文件中已经声明的那些函数的具体代码。需要注意的是,开头必须#include一下实现的头文件,以及要用到的头文件。那么当你需要用到自己写的头文件中的类时,只需要#include进来就行了。
当源文件和头文件不在同一个目录下时,要在 项目-属性-c/c++-附加包含目录中编辑所在的目录。
参数传递:
- 当实参拷贝给形参时,他们之间还是独立的对象,此过程被称为值传递。
- 改变形参不能影响到实参的变化
- C++最好使用引用类型的形参代替指针!
- 传参数时直接传数值, 在函数声明中使用引用。能起到类似指针的效果。
- 如果函数无需改变引用形参的值,最好将其声明为常量引用。
- 当实参拷贝给形参时,他们之间还是独立的对象,此过程被称为值传递。
阅读全文
0 0
- 2017-5-17 C++ primer 笔记 (static和extern的区别和用法)
- 【static&extern】static和extern的区别
- c/c++中static和extern用法和区别
- static, extern的用法和区别, const用法
- extern和static 的用法
- static和extern的用法
- static和extern的区别
- static和extern的区别
- static和extern的区别
- static和extern 的区别
- static和extern的区别
- static和extern 的区别
- Extern和Static的区别
- static和extern 的区别
- static和extern 的区别
- static和extern 的区别
- static和extern 的区别
- static和extern的区别
- iOS开发探索-高斯模糊&毛玻璃效果
- 使用Android-studio简单实现一个NDK的例子
- 杭电2017
- React Native开发写的JS和React入门知识
- 基于角色的权限管理系统设计思路
- 2017-5-17 C++ primer 笔记 (static和extern的区别和用法)
- Git浅学 更新中
- 非常完善的Log4net详细说明
- 前端页面文件拖拽上传模块html/css/js代码示例
- [leetcode: Python]520. Detect Capital
- 为什么xib或storyboard中定义的label属性是weak,而纯代码定义需要用strong
- 如何快速正确的安装 Ruby, Rails 运行环境
- Algorithm学习笔记 --- 最长公共子序列(DP-动态规划实现)
- Tomcat环境变量配置