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)的更多相关文章

  1. C/C++中static,const,inline三种关键字详细总结

    一.关于staticstatic 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性,下面我将从 static 修饰符的产生原因.作用谈起,全面分析static 修饰符的实质. static ...

  2. c中常用的关键字static const volatile

    在C语言中,关键字static有三个明显的作用:1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变.2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数 ...

  3. 摘:static,const,inline,define的意义

    static 1) 产生背景 引出原因:函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想 ...

  4. 关键字static/const的作用

    static关键字的作用:(1)设置变量的存储域,函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值:(2)限制变量的作用域 ...

  5. OC中的extern,static,const

    const的作用: const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p). 被const修饰的变量是只读的. static的作用: 修饰局部变量: 1.延长局部变量的生命周期,程序结束才会 ...

  6. 深入分析Java中的关键字static

    在平时开发当中,我们经常会遇见static关键字.这篇文章就把java中static关键字的使用方法的原理进行一个深入的分析.先给出这篇文章的大致脉络: 首先,描述了static关键字去修饰java类 ...

  7. PHP 面向对象中常见关键字使用(final、static、const和instanceof)

    PHP 面向对象中常见关键字的使用: 1.final :final关键字可以加在类或者类中方法之前,但是不能使用final标识成员属性. 作用: 使用final标识的类,不能被继承. 在类中使用fin ...

  8. PHP的final关键字、static关键字、const关键字

    在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...

  9. C/C++中关键字static的用法及作用

    本文将主要从static在C和C++共有的作用及C++特有的作用两个方面进行解析. 在C和C++中共有的作用 隐藏(对变量.函数均可) 当同时编译多个文件时,所有未加static前缀的全局变量或全局函 ...

随机推荐

  1. Alexander的Python机器学习 之目录分析。

    无聊,顺应一下潮流,学习一下python机器学习吧. 买了一本书,首先分析一下目录吧. 1.第一章是 Python机器学习的生态系统. 1.1.数据科学或机器学习的工作流程. 然后又分成6点进行详细说 ...

  2. The Git Parable:Git传说(转)

    The Git Parable:Git传说 -------- 毛球子好为人师 原文地址:http://tom.preston-werner.com/2009/05/19/the-git-parable ...

  3. 北京Uber优步司机奖励政策(1月11日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  4. Python破解压缩包密码问题

    所用知识 1. Pool 进程池 2. try...except 异常处理 3.枚举的方式 4.生成器的运用 逻辑关系 通过生成假密码去碰撞!捕获异常,一直碰撞,直到生成的密码与压缩包建立的密码对应, ...

  5. Bootstrap基础篇—常见的CSS类

    一.标题 标签 大小 h1 36px h2 30px h3 24px h4 18px h5 14px h6 12px 二.常见的内联样式 标签 用途 del 删除的文本 s 无用的文本 ins 插入的 ...

  6. selenium,unittest——两个class连续运行

    将多个class放在一个文件内一起运行,这是一个多用例不同网站进行测试的方法 #encoding=utf-8from selenium import webdriverimport time,unit ...

  7. MongoDB->NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"

    关系型数据库遵循ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性: 1.A (Atomicity) 原子性 原子性很容易理解,也就是说事务里的所有操作要么 ...

  8. spark操作数据库的几种方法

    一.使用jdbcRDD的接口: SparkConf conf = new SparkConf(); conf.setAppName("Simple Application").se ...

  9. 实现Bidirectional LSTM Classifier----深度学习RNN

    双向循环神经网络(Bidirectional Recurrent Neural Networks,Bi-RNN),Schuster.Paliwal,1997年首次提出,和LSTM同年.Bi-RNN,增 ...

  10. python3中使用python2中cmp函数出现错误

    在python2中我们经常会使用cmp函数来比较一些东西,但是在python3中,你再来使用这个函数的时候,发现就报错了,提示找不到这个函数,这是为啥呢? 答:新版的python已经舍弃这种用法 而在 ...