zoukankan      html  css  js  c++  java
  • C++ const,static成员

    1. 尽管函数名和参数列表都相同,void foo( ) const成员函数是可以与void foo( )并存的,可以形成重载! 我们假设调用语句为obj.foo(),如果obj为non-const对象,则调用foo()。如果obj为const对象,则调用foo()const。另外要注意,假如没有提供foo()const,则const obj调用foo()将会报错。但假如是没有提供foo(),则non-const obj调用foo()const是完全没有问题的。也就是说,non-const对象可以调用const函数,但const对象不能调用non-const函数.
    2. const关键字所起作用的本质,就是把隐藏着的默认的this指针参数,改成const类型。也就是说:假如void foo( )函数被编译器改写为 void foo(T* pThis),则void foo( ) const将会被改写为void foo(const T* pThis) 。i.e. 在函数末尾添加一个const,就相当于在隐藏的this参数类型前加一个const.
    3. 这样做有两个效果,第一:编译器将不允许foo()const修改pThis指向的对象的成员。第二、const对象只能调用const成员函数,否则就会报错说把const T* 转化为T* 会丢失qualifier

    static Global variable: 文件作用域:只在声明的文件中有效,其他源文件中不可见;同时有了static的生命周期
    Global variable:文件作用域:可以加上extern 声明为外部变量,跨文件作用域

    static (Global) Function: 有文件作用域,只在本文件中使用
    Global Function:无文件作用域

    static Member (in Function) variable:函数调用完成后,变量保存状态,再次调用函数,不会重新分配空间
    Member(in Funcition) variable:函数内的生命周期

    static Member(in Class) variable: 属于类范围,
    Member(in Class) variable:属于类派生的特定对象,生命周期和对象一致

    原文:http://www.cnblogs.com/visayafan/archive/2011/11/24/2261849.html

  • 相关阅读:
    【剑指Offer】面试题55
    一大波趣图:CSS的力量
    你必须收藏的Github技巧
    3月份GitHub上最热门的Java开源项目
    趣图:快下班了,剩一个bug,修复一下再走
    Java程序员必备的Intellij插件
    为什么前后端分离了,你比从前更痛苦?
    趣图:好好干,今天再加个班
    高并发下的下单功能设计
    Mybatis的基本要素--核心对象
  • 原文地址:https://www.cnblogs.com/qiangupc/p/3163161.html
Copyright © 2011-2022 走看看