C++几个重要关键字(包含借鉴其他博主的东西)
//内存 栈区 与 static区 ,C++为了兼容C,#include 只是文本替换,导致一堆命名空间之间的复杂问题,倍受人诟病
extern 关键字
1.基本含义:意如其名,告诉编译器声明的东西是外部的。
特殊用法 extern "C" + 函数,声明这个函数翻译优化的时候 函数名 不改变(c++因为多态等原因,会改变函数名)
2. 声明变量用法:
(1) 1.c 中 char a[6]; 2.c 中 extern char a[];
(2) 1.c 中 char a[6];1.h中 extern char a[]; 2.c中 #include ''1.h" 即可访问 a;(以头文件声明,来代替每次在其他文件中声明)
(3) 1.c 中 ;1.h中 extern char a[6]="123456"; ; 2.c中 #inlcude “1.h” 会报错 (定义会覆盖extern关键字,显示重复定义)
3.声明函数变量用法
最好参考2中(2) 用法,这样后面 函数参数修改 后,编译期间会报错
//////////////////////////////////////////////////////////////////////////////////////////////////////
static 关键字
extern 表明该变量在别的地方已经定义过了,在这里要使用那个变量.
1.基本含义:意如其名,表示静态的变量,分配内存的时候, 存储在静态区,不存储在栈上面.
static 类似于隐藏,声明即需要定义,只有一个副本,只能在本身的编译单元内使用
extern部分 2 中(3)方法若将extern 替换成 static ,则可以编译通过,此时在2个编译单元中 都有一份 副本(互不相干);但是会带来很多问题,
因此 static 声明与定义 一般放在 .c 文件中
2. c语言中使用
修饰变量,函数 同 1 中说明
修饰 函数中变量,这个比较特殊,肯定是放在静态区,生命周期是到程序结束!!
3. c++语言中使用,主要是类中
修饰成员变量,成员函数 属于类所有,一个副本
/////////////////////////////////////////////////
const 关键字
1. const 自带属性 是 static 声明即需要定义,只有一个副本,只能在本编译单元内使用
2. extern const 属性 是 extern
3. const int * const p ;
4. 给定一个 类 class A,可能存在使用const的地方,第一行编号为 1,2,3,4,5,6,第二行编号为11,22,33,44,55,66
A a1(类变量), 普通成员函数 , 普通类成员 , 普通成员 , 普通函数参数 , 普通返回参数
const A a1(类常变量);const 成员函数 ;const 类成员, const 成员, const函数参数 , const 返回参数
普通成员函数 表示,我将要修改调用该函数的对象的数据
const成员函数 表示, 不会修改调用该函数的对象的数据 (实在要修改,可以将某个成员变量设定为 mutable )
正确的访问逻辑是:
const成员函数 可以访问一切,普通成员函数不能访问 const对象任何成员
const类对象 只能访问 const成员函数,普通类对象 可以访问一切
const成员,必须在初始化列表中初始化
作为一种良好的编程风格,在声明一个成员函数时,若该成员函数并不对数据成员进行修改, 应尽可能将该成员函数声明为const成员函数
5 const &: 把不变的给 可变 的是有问题的
///////////////////////////////////////
volatile : 防止编译器优化,有点复杂
C++几个重要关键字(包含借鉴其他博主的东西)的更多相关文章
- Emacs Helm: 使用关键字搜索、获取、执行任何东西
Helm 是一个emacs的软件包,定义了一个通用框架,交互式地.动态缩减式地使用关键字选择.获取.执行任何东西.比如: 执行emacs 命令 打开文件 查看man文档 执行grep操作 执行apt命 ...
- 织梦dedecms后台文章搜索关键字,关键字包含文章内容的代码修改
1.织梦dedecms后台文章搜索功能在哪里找?织梦dedecms后台-->核心-->常用操作-->所有档案列表(或)织梦dedecms后台-->核心-->内容管理--& ...
- 转:C语言中volatile关键字的作用 专家博客
源地址:http://blog.csdn.net/tigerjibo/article/details/7427366 一.前言 1.编译器优化介绍: 由于内存访问速度远不及CPU处理速度,为提高机器整 ...
- Spark编程环境搭建(基于Intellij IDEA的Ultimate版本)(包含Java和Scala版的WordCount)(博主强烈推荐)
福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 Java全栈大联盟 ...
- 谈 CSS 模块化
以前看过模块化的相关资料以及解释,对模块化有了一个表皮的了解,自己也做了一些相关的实践,由于接触到的项目交小,所以也没能更好的去体现和理解模块化,但总体还是有那么一些感悟,但是如果要说怎么才能算是好的 ...
- 团队作业-Alpha版本发布2
团队项目-系统设计 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience/homework 这个作业要 ...
- C++ Virtual
摘自:http://www.cnblogs.com/xd502djj/archive/2010/09/22/1832912.html namespace QCAR { /// Area is the ...
- Kaggle:Home Credit Default Risk 数据探索及可视化(1)
最近博主在做个 kaggle 竞赛,有个 Kernel 的数据探索分析非常值得借鉴,博主也学习了一波操作,搬运过来借鉴,原链接如下: https://www.kaggle.com/willkoehrs ...
- Androidn Notification的使用,解决找不到setLatestEventInfo方法
转自:http://blog.csdn.net/songyachao/article/details/51245370#comments 今天使用4.0.3使用 Notification notifi ...
随机推荐
- SCCM2012 R2实战系列之九:OSD(中)--捕获镜像
在上篇文章中我们详细的完成了OSD的初始化配置.导入镜像.任务序列的创建和常见问题的排错.但是在实际环境中这样分发了干净的操作系统后还需要手动为客户端安装各种各样的应用程序.所以更为好的方法是将一台计 ...
- 第二章:安装zabbix过程
2.2 安装zabbix过程 2.2.1 安装方式选择 编译安装 (服务较多,环境复杂) yum安装(干净环境) 使用yum 需要镜像yum源 http://www.cnblogs.com/clsn/ ...
- MySQL 8.0的关系数据库新特性详解
前言 MySQL 8.0 当前的最新版本是 8.0.4 rc,估计正式版本出来也快了.本文介绍几个 8.0 在关系数据库方面的主要新特性. 你可能已经知道 MySQL 从版本 5.7 开始提供了 No ...
- Postgres安装
yum install zlib-devel gcc make #创建用户和组groupadd postgresuseradd -g postgres postgres mkdir -p /usr/l ...
- CentOS之正则表达式
支持linux正则表达式的工具有:grep:实现查找,sed,awk:都是流式编辑器,可以实现查找和替换,并且把替换的文本输出到屏幕上. grep工具 grep [-cinvABC] 'word' - ...
- Vue学习记录(一)
一.引入js文件(直接采用CDN): http://cdnjs.cloudflare.com/ajax/libs/vue/1.0.26/vue.min.js 二.简单实例: (1)HTML代码: &l ...
- python学习之----导航树
findAll 函数通过标签的名称和属性来查找标签 .但是如果你需要通过标签在文档中的位 置来查找标签,该怎么办?这就是导航树(Navigating Trees)的作用.在第1 章里,我们 看过用单一 ...
- swing 下拉菜单
package rom; import java.lang.*; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; i ...
- 我也说说Nginx——先搞搞清楚
一.Nginx的诞生 这个很多文章里都有,总之就是当年啊有个技术困难叫C10K问题,就是如何解决10万个客户端的并发请求问题.然后有个俄罗斯大牛某某某,在02年使用C语言搞了个东东声称可以处理每天5亿 ...
- 18.Mysql搜索引擎及其区别
这是面试中的问题:当时也是没有直接回答出来,还是因为基础知识不扎实. 一般Mysql常用的搜索引擎有:ISAM.MylSAM.HEAP.InnoDB.Berkley(BDB) ISAM:执行读取操作的 ...