c/c++中的关键字(static、const、inline、friend)
static:1、a、c语言中static修饰的局部变量在编译时赋初始值,只赋初始值一次,在函数运行时已有初值,每次调用函数时不用重新赋值,指示保留上次 函 数调用结束时的值。
如果定义局部变量不赋初值的话编译时自动赋值0或‘0’
在程序整个运行期间不释放,虽然在函数调用后仍存在,但其他函数不能引用它
b、全局变量是从变量定义出开始到本文件的末尾。
c、静态函数的作用于仅限于此文件,所以不用担心与同名的内部函数冲突。
2、c++类的静态成员是该类型的所有对象所共享,存储在数据段,类的成员函数没有隐含的this指针,使用类名::函数名直接调用类的成员函数,Date::Display()
const:1、a、c中常变量: const 类型说明符 变量名。取代了C中的宏定义,声明时必须进行初始化(c++类中则不同)。const限制了常量的使用方 式,
并没有描述常量应该如何分配。如果编译器知道了某const的所有使用,它甚至可以不为该const分配空间。最简单的常见情况就是的值 在编译时已知,
而且不需要分配存储。C标准中,const定义的常量是全局的,C++中视声明位置而定。
b、常引用: const 类型说明符 &引用名,int i = 10;const int& ri = i;//表示不能通过该引用去修改对应的内存的内容
c、常数组: 类型说明符 const 数组名[大小]
d、常指针: const 类型说明符* 指针名 ,类型说明符* const 指针名。
char *const cp; //到char的const指针,cp不能指向别的字符串,但可以修改其指向的字符串的内容
char const *pc1; //到const char的指针,*pc1的内容不可以改变,但pc1可以指向别的字符
2、a、c++常成员 函数:类名::Display(形参) const、const
修饰成员函数 void Display() const ---修饰this指针所指的对象(编译器
处理为) --- > void
Display(const Date*this) 调用成员数的对象在函数中不会被改变。
const对象只能访问const成员函 数,而非const对象可以访问任意的成员函数,包括const成员函数;
const对象的成员是不能修改的,而通过指针维护的对象确实可以修改的;
const成员函数不可以修改对象的数据,不管对象是否具有const性质。编译时以是否修改成员数据为依据进行检 查
inline:inline函数,c++编译时会在调用内联函数的地方展开,没有函数压栈的开销,提高了效率
1、inline函数的定义放在一起。
2、代码长或有递归或循环的不适宜用。
3、对编译器只是一个建议。
4、定义在类内的成员函数默认为内联函数
friend:友元函数,在C++中友元函数允许在类外访问该类中的任何成员,就象成员函数一样,友元函数用关键字friend说明。
1. 友元函数不是类的成员函数。
2. 友元函数可以通过对象访问所有成员,私有和保护成员也一样。
class Date
{
friend void Display( const Date & d);
private :
int _year ; // 年
int _month ; // 月
int _day ; // 日
};
void Display (const Date& d)
{
cout<<"year:" <<d. _year<< endl ;//调用私有成员
cout<<"month:" <<d. _month<< endl ;
cout<<"day:" <<d. _day<< endl ;
}
友元函数:友元类的每个成员函数都是另一个类的友元函数,可以访问另一个类的的私有成员,破坏了类的封装性
c/c++中的关键字(static、const、inline、friend)的更多相关文章
- C/C++中static,const,inline三种关键字详细总结
一.关于staticstatic 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性,下面我将从 static 修饰符的产生原因.作用谈起,全面分析static 修饰符的实质. static ...
- c中常用的关键字static const volatile
在C语言中,关键字static有三个明显的作用:1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变.2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数 ...
- 摘:static,const,inline,define的意义
static 1) 产生背景 引出原因:函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想 ...
- 关键字static/const的作用
static关键字的作用:(1)设置变量的存储域,函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值:(2)限制变量的作用域 ...
- OC中的extern,static,const
const的作用: const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p). 被const修饰的变量是只读的. static的作用: 修饰局部变量: 1.延长局部变量的生命周期,程序结束才会 ...
- 深入分析Java中的关键字static
在平时开发当中,我们经常会遇见static关键字.这篇文章就把java中static关键字的使用方法的原理进行一个深入的分析.先给出这篇文章的大致脉络: 首先,描述了static关键字去修饰java类 ...
- PHP 面向对象中常见关键字使用(final、static、const和instanceof)
PHP 面向对象中常见关键字的使用: 1.final :final关键字可以加在类或者类中方法之前,但是不能使用final标识成员属性. 作用: 使用final标识的类,不能被继承. 在类中使用fin ...
- PHP的final关键字、static关键字、const关键字
在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...
- C/C++中关键字static的用法及作用
本文将主要从static在C和C++共有的作用及C++特有的作用两个方面进行解析. 在C和C++中共有的作用 隐藏(对变量.函数均可) 当同时编译多个文件时,所有未加static前缀的全局变量或全局函 ...
随机推荐
- 20145202马超《网络对抗》Exp6 信息搜集与漏洞扫描
本实践的目标是掌握信息搜集的最基础技能.具体有(1)各种搜索技巧的应用(2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的查点(4)漏洞扫描:会扫 ...
- java 程序文本文档形式的编写,编译,及运行
一.程序的编写 1.在指定路径下新建文本文档 如在f盘新建了一个名为demo的文件夹,在该文件夹路径下新建了一个文本文档 2.打开文本文档,进行编写,例如: 3.保存 选择文件另存为,文件名称为你创建 ...
- Error starting mongod. /var/run/mongodb/mongod.pid exists.启动mongodb报错
linux上安装mongodb,启动时报上面的错,解决如下: 解决方法: 1.删除mongod.pid文件 rm -rf /var/run/mongodb/mongod.pid 2.修改/tmp/mo ...
- C#调用大漠插件,发送QQ和微信消息
大漠插件就不过多介绍了,不知道的请查下百度.主要是讲解C#怎么调用大漠插件. 大漠插件提供了COM版本,C#直接点击引用,添加即可.然后注册下大漠插件到系统文件夹,注册代码如下: static str ...
- Linux命令应用大词典-第21章 LVM和RAID管理
21.1 pvcreate:创建物理卷 21.2 pvscan:列出找到的物理卷 21.3 pvdisplay:显示物理卷的相关属性 21.4 vgcreate:创建卷组 21.5 vgscan:查找 ...
- 211. String Permutation【LintCode by java】
Description Given two strings, write a method to decide if one is a permutation of the other. Exampl ...
- AC 自动机——多模式串匹配
网站上的敏感词过滤是怎么实现的呢? 实际上,这些功能最基本的原理就是字符串匹配算法,也就是通过维护一个敏感词的字典,当用户输入一段文字内容后,通过字符串匹配算法来检查用户输入的内容是否包含敏感词. B ...
- Elasticsearch 排序插件的开发
直接观察到的几个问题 简单expression脚本的执行效率 > java 插件,10000条数据可以测试出1ms左右的差距. Es会不断调用newScript来创建"足够多" ...
- oraclize预言机资料
oraclize预言机资料 智能合约如何可信的与外部世界交互: https://blog.csdn.net/sportshark/article/details/77477842 国外一篇讲得很详细的 ...
- Python高级编程-使用SQLite
SQLite是一种嵌入式数据库,它的数据库就是一个文件.由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成. Python就 ...