精华内容
下载资源
问答
  • C++关键字volatile

    2017-09-24 21:19:41
    这说明这个 volatile 关键字发挥了它的作用。其实不只是“内嵌汇编操纵栈”这种方式属于编译无法识别的变量改变,另外更多的可能是多线程并发访问共享变量时,一个线程改变了变量的值,怎样让改变后的值对其它线程 ...

    http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777432.html

    这说明这个 volatile 关键字发挥了它的作用。其实不只是“内嵌汇编操纵栈”这种方式属于编译无法识别的变量改变,另外更多的可能是多线程并发访问共享变量时,一个线程改变了变量的值,怎样让改变后的值对其它线程 visible。一般说来,volatile用在如下的几个地方:
    1) 中断服务程序中修改的供其它程序检测的变量需要加volatile;
    2) 多任务环境下各任务间共享的标志应该加volatile;
    3) 存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;

    #include <stdio.h>
    
    void main()
    {
        int i = 10;
        int a = i;
    
        printf("i = %d", a);
    
        // 下面汇编语句的作用就是改变内存中 i 的值
        // 但是又不让编译器知道
        __asm {
            mov dword ptr [ebp-4], 20h
        }
    
        int b = i;
        printf("i = %d", b);
    }

    然后,在 Debug 版本模式运行程序,输出结果如下:

    i = 10
    i = 32
    然后,在 Release 版本模式运行程序,输出结果如下:

    i = 10
    i = 10
    这是链接的效果,实测。。。并没有区别,都是10…

    展开全文
  • C/C++关键字与基础

    2020-09-24 14:58:29
    C/C++关键字与基础C/C++的关键词StaticC语言中C++全局变量与静态变量const如何定义一个只能在堆上(栈上)生成对象的类?只在堆上只能在栈上虚析构函数析构函数虚函数与多态C++中struct和class的区别 C/C++的关键词 ...

    C/C++的关键词

    Static

    C语言中

    函数体内的变量被声明为static只会被初始化一次,这个函数被调用过程中其值不变。 
    函数外,文件内,用来限制变量或函数的作用域为当前文件。是变量就只能被当前文件中的函数访问,属于本地的全局不变量且只会被初始化一次。是函数,被本文件内其他函数调用。
    

    C++

    除了以上的功能,类内数据成员也可以被定义成为static,也就是静态数据成员。
    
    对于非静态数据成员,每个对象都有个自己的副本,而静态数据成员只有一个副本,被所有的对象共享。
    			
    静态数据成员属于类不属于对象,没有实例化的对象也可以使用“类名:静态成员变量”
    			
    静态成员函数属于类,被所有对象共享。普通成员函数隐含this指针,指向类的对象本身,而静态成员函数没有this指针,因此类的静态成员函数无法访问对象成员,也无法访问普通成员函数,静态成员函数只能访问静态成员函数或静态成员。
    

    全局变量与静态变量

    作用范围不同,全局变量作用于整个工程,静态变量作用于所在的文件
    
    静态数据成员可以是private而全局变量则不能
    
    类的静态成员必须在类外初始化,声明的时候不分配内存,定义时才分配。
    

    const

    定义变量为常量  const int N=100;//常量在定义的时候必须初始化
    
    修饰函数的参数,表示在函数体内不能修改这个参数的值
    
    修饰函数的返回值
    

    如何定义一个只能在堆上(栈上)生成对象的类?

    只在堆上

    方法:将析构函数设置为私有

    原因:C++ 是静态绑定语言,编译器管理栈上对象的生命周期,编译器在为类对象分配栈空间时,会先检查类的析构函数的访问性。若析构函数不可访问,则不能在栈上创建对象。

    只能在栈上

    方法:将 new 和 delete 重载为私有

    原因:在堆上生成对象,使用 new 关键词操作,其过程分为两阶段:第一阶段,使用 new 在堆上寻找可用内存,分配给对象;第二阶段,调用构造函数生成对象。将 new 操作设置为私有,那么第一阶段就无法完成,就不能够在堆上生成对象。

    虚析构函数

    (一般基类的析构函数都是虚析构函数)
    
    作用: 防止内存泄漏
    

    析构函数

    类析构顺序:
    1)派生类本身的析构函数;
    2)对象成员析构函数;
    3)基类析构函数。

    虚函数与多态

    静态多态:重载,编译时已确定
    动态多态:虚函数机制,子类中重写基类的虚函数,保证指向子类对象的基类指针调用子类重写的函数

    C++中struct和class的区别

    在C++中,可以用struct和class定义类,都可以继承。区别在于:structural的默认继承权限和默认访问权限是public,而class的默认继承权限和默认访问权限是private。
    另外,class还可以定义模板类形参,比如template <class T, int i>。

    展开全文
  • c++ 关键字static

    2017-01-18 22:20:40
    static变量属于类,只能在类外部初始化;static变量是几个对象共享使用,相当于全局变量; 外部初始化的格式: int Student::m_total = 0; 类型 类名::static变量 = 数值; static 成员的访问形式: 1. 类名::static...
     static成员变量
    static变量属于类,只能在类外部初始化;static变量是几个对象共享使用,相当于全局变量;
    外部初始化的格式:
    int Student::m_total = 0;
    类型   类名::static变量 = 数值;

    static 成员的访问形式:
    1. 类名::static变量
    Student::m_total
    2.对象.(static 变量)
     stu.m_total
     3.对象指针->(static成员变量)
      pstr->m_total
      3.static函数
      没有this指针,只能访问static成员;声明加static,定义的时候不加

      

    #include<iostream>
    using namespace std;


    class Student{
    public:
    Student(char *name, int age, float score);
    void show();
    public:
    static int gettotal();
    static float getpoints();
    private:
    static int m_total;
    static float m_points;
    private:
    char *m_name;    //没有this函数
    int m_age;
    float m_score;
    };




    Student::Student(char *name, int age, float score):m_name(name),m_age(age),m_score(score)
    {
        m_total ++;        //统计所有学生
    m_points +=score;   //统计所有分数总和
    }
    void Student::show()
    {
        cout<<m_name<<":"<<m_age<<":"<<m_score<<endl;
    }


    //static变量属于类,只能在类外部初始化
    int Student::m_total = 0;
    float Student::m_points = 0;


    int Student::gettotal()
    {
        return m_total;
    }


    float Student::getpoints()
    {
        return m_points;
    }




    int main()
    {
           Student *pstu = new Student("lihua", 16, 91);
    Student *pstu1 = new Student("lih", 16, 92);
    Student *pstu2= new Student("li", 16, 96);
    Student *pstu3 = new Student("l", 16, 95);
      // (new Student("xiaoming", 15, 90.6))->show();
       //(new Student("lilei", 16, 80.5))->show();                  //这里也对,比较简洁,但是初学者有点看不懂,这里做了简化
       //(new Student("zhanghua", 16, 99.0))->show();
       //(new Student("wangkang", 14, 60.8))->show();
       
       int total=Student :: gettotal();                    //Student :: gettotal()函数返回值给int total
       float points = Student::getpoints();
       cout<<"all have "<<total< < "students, all score is "<<points<<", average is"<<points/total<<endl;
       
       return 0;


    }








































    展开全文
  • C/C++关键字解析

    2017-08-18 16:46:31
    假如别人问某一个关键字是否属于C/C++,要能正确的答出来。1)由ANSI标准定义的C语言关键字共32个 auto double int struct break else long switch case enum register typedef char extern return union const ...

    2、C/C++分别有多少个关键字? 假如别人问某一个关键字是否属于C/C++,要能正确的答出来。

    1)由ANSI标准定义的C语言关键字共32个

      auto double int struct break else long switch

      case enum register typedef char extern return union

      const float short unsigned continue for signed void

      default goto sizeof volatile do if while static

      根据关键字的作用,可以将关键字分为数据类型关键字和流程控制关键字两大类。
    
    
      **1) 数据类型关键字**
    
    
      **A.基本数据类型(5个)**
    
      void :声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果
    
      char :字符型类型数据,属于整型数据的一种
    
      int :整型数据,通常为编译器指定的机器字长
    
      float :单精度浮点型数据,属于浮点数据的一种
    
      double :双精度浮点型数据,属于浮点数据的一种
    
    
      **B .类型修饰关键字(4个)**
    
      short :修饰int,短整型数据,可省略被修饰的int。
    
      long :修饰int,长整形数据,可省略被修饰的int。
    
      signed :修饰整型数据,有符号数据类型
    
      unsigned :修饰整型数据,无符号数据类型
    
    
      **C .复杂类型关键字(5个)**
    
      struct :结构体声明
    
      union :共用体声明
    
      enum :枚举声明
    
      typedef :声明类型别名
    
      sizeof :得到特定类型或特定类型变量的大小
    
      **D .存储级别关键字(6个)**
    
      auto :指定为自动变量,由编译器自动分配及释放。通常在栈上分配
    
      static :指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部
    
      register :指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数
    
      extern :指定对应变量为外部变量,即标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义
    
      const :与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)
    
      volatile :与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值
    
    
      **2) 流程控制关键字**
    
      **A .跳转结构(4个)**
    
      return :用在函数体中,返回特定值(或者是void值,即不返回值)
      continue :结束当前循环,开始下一轮循环
    
      break :跳出当前循环或switch结构
    
      goto :无条件跳转语句
    
      **B .分支结构(5个)**
    
      if :条件语句,后面不需要放分号
    
      else :条件语句否定分支(与if连用)
    
      switch :开关语句(多重分支语句)
    
      case :开关语句中的分支标记
    
      default :开关语句中的“其他”分支,可选。
    
      **C .循环结构(3个)**
      1)for:for循环结构,for(1;2;3)4;的执行顺序为1->2->4->3-      >2...  循环,其中2为循环条件。在整个for循环过程中,表达式1只计算 一次,表达式2和表达式3则可能计算多次,也可能一次也不计算。循环体可能多次执行,也可能一次都不执行。
      
      2)do :do循环结构,do 1 while(2); 的执行顺序是1->2->1...循环,2为循环条件
    
      3)while :while循环结构,while(1) 2; 的执行顺序是1->2->1...循环,1为循环条件
      
      以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。
    

    2)C++关键字

    ISO C++98/03关键字共63个

    C++11 关键字共73个。
    新增关键字:alignas、alignof、char16_t、char32_t、constexpr、decltype、noexcept、nullptr、static_assert、thread_local。

    alignas
    alignof用于获取取指定表达式指定的(类似sizeof,可以直接是类型名)的对齐(alignment)。alignas用于声明时指定对齐类似于现有的类型。和sizeof类似,两者的操作数都不被求值。
    constexpr
    类似const但更强大,修饰函数或对象,表示函数结果或对象是编译时决定的常量,以便优化。(const不能修饰一般的函数,也不一定指定声明的对象能编译期的常量表达式,更可能只是只读对象。而在C语言中,const完全只能指定只读对象。)
    char16_t 和 char32_t
    二者分别表示16位字符型和32位字符型,类似char和wchar_t,也是一般只专用于表示字符的整数类型,且设计上用于表示Unicode字符。char16_t和char32_t是C++11新增的,以克服wchar_t在不同平台上无法保证确定宽度的缺点。
    decltype
    用于编译时推断类型。此外参与函数声明的另一种语法:指定返回auto,同时decltype引导trailing-return-type指定实际应该返回类型。decltype的操作数也不被求值。
    nullptr
    字面量nullptr是具有std::nullptr_t类型的右值,是空指针常量。C++98/03中表示空指针常量的NULL或0都会在重载中引起混淆,而纯库的解决方案在这里也遇到困难,所以有必要加入新的关键字来专门表示空指针。
    noexcept
    实践表明动态异常规范会影响运行时性能。新增的noexcept表示静态异常规范,只指定函数(模版)是否有异常抛出,这里noexcept即noexcept(true),表示没有异常抛出。除了异常规范,noexcept可以作用于一个表达式来判断是否有异常,这对于模版代码非常有用。
    static_assert
    用于编译时的静态断言:若指定的表达式为false则编译失败。
    auto
    C++11标准和C++98/03标准的auto是不同的。C++98/03标准中,auto表示自动储存类型[6]  ;C++11标准中,auto表示由编译器静态判断其应有的类型[4]  。
    asm
    用于语法:
    asm-definition:
      asm ( string-literal ) ;
    意义由实现定义,典型实现中传输其中的字符串给汇编器。
    auto
    在C++98/03中这个这个关键字用于声明块中的变量的生存期为自动生存期,若是对象同时具有自动存储类,即生存期在块结束时结束。这样的变量被称为局部变量。这个关键字不常用,因为即便省略,声明的默认就是auto的。[6] 
    在C++11中,auto的含义改变为自动通过初值符推断声明的类型占位符。如声明auto i = 1;,auto就相当于int,因为1是int类型,可以推断出i的类型。也可以使用auto& i等声明,具体推导规则同模版参数类型推导。[4] 
    *_cast
    即const_cast、dynamic_cast、reinterpret_cast、static_cast。
    C++风格的类型转换。dynamic_cast是动态的,需要运行时支持;其它都是静态检查,相比C风格的类型转换更加细化,增强了类型安全性。
    bool,true,false
    bool即布尔类型,属于基本类型中的整数类型,取值为真和假。true和false是具有bool类型的字面量,是右值,分别表示真和假。
    break,continue,goto
    break用于跳出for或while循环或switch。continue用于跳转到循环起始。goto用于无条件跳转到函数内的标号。结构化程序较少使用goto,更多使用循环代替。
    case,default,switch
    switch分支语句的起始,根据switch条件跳转到case标号或defalut标记的分支上。
    catch,throw,try
    用于异常处理。try指定try块的起始,try块后的catch可以捕获异常。异常由throw抛出。throw在函数中还表示动态异常规范,但在C++11中被标记为过时(由noexcept部分取代)。
    char,wchar_t
    表示字符型和宽字符型这些整数类型(属于基本类型),但一般只专用于表示字符。char(和signed char、unsigned char一起)事实上定义了字节的大小。
    const,volatile
    const和volatile是类型修饰符,语法类似,在C++中合称为cv-限定符(cv-qualifier)。可以共同使用。用于变量或函数参数声明,也可以限制非静态成员函数。const表示只读类型(指定类型安全性,保护对象不被意外修改),volatile指定被修饰的对象类型的读操作是副作用(因此读取不能被随便优化合并,适合映射I/O寄存器等)。
    struct,class,union
    用于类型声明。class是一般的类类型。struct在C++中是特殊的类类型,声明中仅默认隐式的成员和基类访问限定与class不同(struct是public,class是private)。union是联合体类型。满足特定条件类类型——POD struct或POD union可以和C语言中的struct和union对应兼容。
    class还有个用途是在模版类型声明中作为表示模版类型参数或模版模版参数的语法的必要组成部分。前者也可被typename代替。
    delete,new
    delete单独使用,表示释放具有动态存储期对象,默认版本调用全局的去配器(deallocator)::operator delete和析构函数。new单独使用,表示请求分配动态存储期对象,默认版本调用全局的分配器(allocator)::operator new和指定的析构函数。和operator连用表示分别表示去配器(operator delete)和分配器(operator new),用于释放分配器(allocator)的内存和分配内存。operator delete也在分配内存被异常中断时被调用。
    do,for,while
    循环语句的组成部分。C++支持do-while循环、for循环和while循环。C++11新增了ranged-based for循环,用:分隔声明的对象和指定循环的范围。
    数值类型
    即double、float、long、int、short、signed、unsigned。
    signed和unsigned作为前缀修饰整数类型,分别表示有符号和无符号。signed和unsigned修饰char类型,构成unsigned char和signed char,和char都不是相同的类型;不可修饰wchar_t、char16_t和char32_t。其它整数类型的signed省略或不省略,含义不变。signed或unsigned可单独作为类型,相当于signed int和unsigned int。
    double和float专用于浮点数,double表示双精度,精度不小于float表示的浮点数。long double则是C++11指定的精度不小于double的浮点数。
    其它关键字表示整数类型。从占用空间大小(sizeof)来看,保证char<=short<=int<=long<=long long。注意这些都不是相同的类型,即便大小和范围都一致;各自具有unsigned版本。其中long long是C++11指定的不小于long的整数。
    if,else
    条件语句的组成部分。if表示条件,之后else表示否定分支。
    enum
    构成枚举类型名的关键字。C++11新增带作用域的枚举,用enum class或enum struct(两者等价)声明。
    explicit
    这个关键字修饰构造函数声明,表示显式构造函数(模版),显式构造函数不参与特定的重载。
    C++11从两个角度扩展了用法。其一是适用于转换函数(模版),类似构造函数,避免不需要的重载。其二是列表初始化,除非直接使用std::initializer_list,显式构造函数被列表初始化忽略(在C++98/03中,explicit仅对单一参数调用构造函数有意义,这里打破了这个限制)。
    export
    导出模版,用于分离编译。当初标准委员会未经充分实践支持匆忙通过了这一决定,被EDG证明具备不现实的可用性(即便EDG唯一地实现了这一个特性,他们也表示反对)[7]  。MSVC、GCC、Clang等其它主流编译器前端都没有实现这一特性,甚至这是唯一明显约定不符合C++98/03的特性。C++11废除了这个export关键字的含义,但保留这个关键字,供以后使用[3]  。
    extern
    extern意为“外来的”,是存储类声明修饰符。这个关键字在C语言中即很不明确,容易被混淆(尤其是extern inline——好在C++没有这种用法)。extern表示被修饰的声明中,名称的链接保持和之前的一致(若已有相同声明存在),或保持默认值(若之前没有相同名称的声明存在)——取决于声明的位置。在命名空间作用域(注意包括全局命名空间),extern表示外部链接;若这里省略extern,则对于const对象,默认具有内部链接;否则表示具有和命名空间一致的链接(若顶层没有嵌套未命名的命名空间,就是外部链接,否则是内部链接)。
    C++11新增extern用于模版显式实例化声明,表示不在当前翻译单元实例化模版,而在别处有定义。这可以提升编译效率。
    friend
    声明友元,使其不受访问权限控制的限制。
    inline
    声明定义内联函数(模版),提示编译时内联——将所调用的代码嵌入到主调函数中。注意是否内联取决于实现——编译器有权不实际内联,如果它认为这是必要的或更符合预期的目标代码质量。但inline还改变了ODR(One Definition Rule)的适用性。类似函数模版,在头文件直接定义inline函数不会视为重复定义违反ODR而编译出错。C++中,一个函数若声明inline,则每处声明都必须保证是inline,和C语言允许extern inline或static inline不同——尽管C++实现可以提供类似非标准的扩展。注意类成员函数若在类定义内给出定义则隐含inline。
    C++11中,新增inline namespace,指示命名空间中的名称同时是外层命名空间直接包含的名称。这便于命名空间的版本管理,减少冲突。
    mutable
    用于类的非静态非const数据成员,表示不受到成员函数的const的限制,可以在const成员函数中使用。
    namespace
    表示命名空间——其中可以声明若干标识符,组成的名称与其它命名空间不冲突。
    可以声明一个命名空间或命名空间别名。
    operator
    和操作符连用,指定一个重载了的操作符函数,也包括operator new和operator delete。
    private,protected,public
    指定类成员或基类中的名称的访问权限控制,分别表示仅供本类使用、供本类和派生类使用、不设限制。
    register
    提示声明的对象被放入寄存器中以便得到更好的性能。同inline类似,并非强制;不同的是这个提示经常被现代的编译器无视,因此C++11中被标记为过时的。
    return
    子程序返回语句,终止当前函数执行,使控制流返回到主调函数的调用后。若返回类型不是void可以同时带返回值。
    static
    和C语言类似,声明静态存储期对象,或指定一个函数的名称具有内部链接。在C++还有另一个用途——用于类作用域声明,表示声明的成员是类共有的,不需要通过类的对象访问。类的静态数据成员也具有静态存储期,除非被thread_local修饰。
    sizeof
    返回类型名或表达式具有的类型对应的大小。不能对函数使用(虽然可能有非标准扩展)。C++11新增支持直接对类的数据成员作为操作数(之前无法使用)。sizeof的操作数是不被求值的,利用这一点可以配合模版元编程测试类型正确性。
    template
    声明一个模板、模版的特化或显式实例化(另见extern)。模版用于打破类型系统的某些限制,推迟类型检查到实例化得到具体的模版实例进行以复用代码,实现泛型和参数化编程。
    this
    this是一种实体,仅在类的非静态成员中使用,是指向类的对象的指针右值。
    typedef
    用以给数据类型取别名。字面名义上是定义,实际只是声明——这点和C语言的说法不同。
    C++11中可被using新增的用法代替。
    virtual
    声明虚基类或虚函数。具有虚基类或虚函数的类是多态类(polymorphic class),需要运行时提供支持来判断成员函数调用分派到的具体类型。
    typeid
    获取表达式的类型,以std::type_info表示结果,可能抛出std::bad_typeid。当操作数非多态类(引用)类型在编译时即可确定结果,否则需要在运行时取得结果,即RTTI。
    typename
    告诉编译器一个嵌套的限定名(包含::)中的未知的标识符是一个类型。这只在模板中需要区分依赖名称时使用。
    另一种用法是在模版声明参数列表中表示模版类型参数,可被class代替。
    using
    有两种基本用法:using声明和using指示(using namespace ...)。
    前者是声明,引入命名空间或基类作用域内已经被声明的名称。后者引入命名空间内所有的名称。
    C++11新增了一类用法,可以代替typename,同时可以配合template使用(typedef基于语法考虑未被允许加入这种用法)。
    void
    特殊的“空”类型,指定函数无返回值或无参数(在参数列表中只能够唯一地使用),用于表达式转换为void类型以丢弃计算值的必要(C++11加入了discarded-value-expression显式地指出了这一点),或用于void*指针类型。
    try
    try,C++中用于异常处理的组合。
    
    展开全文
  • C++关键字之friend

    2017-05-27 15:56:00
    以friend关键字修饰的函数或类称为友元函数或友元类。 友元函数 友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的....
  • 一下英文内容摘自MSDN,中文内容属于bz自己的理解 typename 通常在模板里用到,我们来讲讲它到底是个什么玩意 typename: Tells the compiler that an unknown identifier is a type. 告诉编译器,这个未知的定义...
  • 2018/4/20C++1.static(静态标识符)1-1:对于一般的属性而言,是针对某个对象的,但是对于加上static关键字而言,针对的是对于整个类的属性(类属性)1-2:在c++中使用类的静态数据来描述静态属性,同时使用静态成员...
  • C++关键字(3)

    2012-07-13 15:32:30
     在本类以外的其它地方定义了一个函数(这个函数可以是不属于任何类的非成员函数,也可以是其它类的成员函数),在类体中用friend对该函数进行声明,此函数就称为本类的友元函数,一个类的友元函数可以访问这个类中...
  • C++ friend关键字

    2020-03-13 09:16:34
    C++ 中,这种友好关系可以用 friend 关键字指明,中文多译为“友元”,借助友元可以访问与其有好友关系的类中的私有成员。如果你对“友元”这个名词不习惯,可以按原文 friend 理解为朋友。 友元函数 在当前类...
  • C++ auto关键字

    2021-01-16 16:30:02
    3)一条语句声明多个变量(只能有一个基本类型,const int和int属于不同类型)auto i = 0, *p = &i; //正确 auto sz = 0, pi = 3.14 //错误 4)初始值为引用时,类型为所引对象的类型 5)auto一般会忽略掉顶层const...
  • C++ Static关键字

    2018-08-06 20:06:34
    在C/C++中, 局部变量按照存储形式可分为三种auto, static, register 与auto类型(普通)局部变量相比, static局部变量有三点不同 1. 存储空间分配不同 auto类型分配在栈上, 属于动态存储类别, 占动态存储区空间, 函数...
  • c++ friend关键字

    2019-09-18 14:31:08
    如果是友元函数,那就是普通函数,并不属于类A,声明在类A中,定义在类A外 如果是友元类,那就是友元类B定义在类A中,B的所有函数都可以访问类A的私有或保护成员。 class B{ private: int foo(A a ){ retu...
  • C++ static关键字

    2019-09-11 12:53:08
    普通局部变量是再熟悉不过的变量了,在任何一个函数内部定义的变量(不加static修饰符)都属于这个范畴。编译器一般不对普通局部变量进行初始化,也就是说它的值在初始时是不确定的,除非对其显式赋值。 普通局部...
  • C++static关键字的作用

    2019-04-24 21:58:16
    C++中static关键字主要在以下场景中用到 一、static修饰全局变量和局部变量 全局变量属于数据,它如果被初始化为0或者不初始化则存放在.bss段,如果初始化不为0,则存放在.data段。如果是字符串常量则存放在....
  • C++static关键字的理解

    2019-06-06 09:55:29
    分为以下四种情况: static修饰全局变量 如果一个变量是普通全局变量,从符号表里面可以看出,普通全局变量是global符号。因此在链接阶段其他obj文件也能够看到。...普通局部变量属于指令,存放在...
  • c++ static 关键字用法

    2011-03-25 14:19:00
    转载自http://hi.baidu.com/xin_jing/home 一、 static 变量 static变量大致分为三种用法1. 用于局部变量中,成为静态局部变量....表示这个成员是属于这个类但是不属于类中任意特定对象 1. 静态局部变量...
  • C++的Static关键字

    2019-10-02 12:22:13
    在类定义中,它的成员(包括成员变量和成员函数),这些成员可以用关键字static声明为静态的,称为静态成员。 不管这个类创建了多少个对象,静态成员只有一个拷贝,这个拷贝被所有属于这个类的对象共享。 例如 ...
  • C++对象模型和this指针4.3.1 成员变量和...只有非静态成员变量才属于类的对象上 class Person { public: Person() { mA = 0; } //非静态成员变量占对象空间 int mA; //静态成员变量不占对象空间 static int mB;
  • (1)类的静态成员函数是属于整个类而非类的对象,所以它没有this指针,这就导致 了它仅能访问类的静态数据和静态成员函数。 (2)不能将静态成员函数定义为虚函数。 (3)由于静态成员声明于类中,操作于其外,...
  • c和c++ 中static关键字用法详解

    万次阅读 2020-07-08 16:50:50
    static关键字在c语言中比较常用,使用恰当能够大大提高程序的模块化特性,有利于扩展和维护。 但是对于c语言初学者,static由于使用灵活,并不容易掌握。本文就static在c语言中的应用进行总结,供参考使用。错漏之...
  • c++ 中static关键字

    2016-09-11 14:11:00
    static可以用于修饰普通的变量和函数,也可以用于修饰类的成员 普通应用 ...被static修饰的类的成员被类的所有对象共享,不属于某个具体对象,普通的类的成员都有this指针指向本对象,而static...
  • static关键字在c语言中比较常用,使用恰当能够大大提高程序的模块化特性,有利于扩展和维护。 但是对于c语言初学者,static由于使用灵活,并不容易掌握。本文就static在c语言中的应用进行总结,供参考使用。错漏之...
  • C++中的static关键字

    2021-04-22 09:09:05
    static关键字的作用: C/C++共有的作用:1)修饰全局变量时,表示只对定义在同一个文件中的函数可见。 2)修饰局部变量时,表示变量的生命周期不因函数结束而终止。 3)修饰函数时,表示该函数只在同一个文件中被...
  • C/C++中的关键字static

    2017-04-20 14:24:03
    一、static的历史术语static有着不寻常的历史.起初,在C中引入关键字static是为了表示退出一个块后仍然...最后,C++重用了这个关键字,并赋予它与前面不同的第三种含义:表示属于一个类而不是属于此类的任何特定对象的
  • c/c++关键字static和const的用法

    千次阅读 2017-06-20 14:41:17
    一、static 1.在函数体一个被声明为静态的变量在这一函数被调用的过程中维持其值不变; 2.在模块内,一个被声明为变量可以被模块内所用,函数访问,但不能被模块外其他函数访问,它是一个...(1)类的静态成员函数是属于
  • static在c中可修饰全局变量,局部变量,函数...当static修饰c++中类的成员变量时,该成员变量属于该类,初始化在类外面进行,且必须初始化。 class A{ public : static int b;//声明一个静态的成员变量 private: ...
  • C/C++中const关键字详解

    2019-07-29 20:23:16
    本文属于转载,原文地址:C/C++中const关键字详解 为什么使用const?采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的界和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 731
精华内容 292
关键字:

属于c++关键字

c++ 订阅