【翁恺】25-静态对象

static 在C语言中有两层含义:1. 存储是持久存储的  2. 访问是受限的

static in c++

C++ 中更复杂,因为有成员变量和成员函数。 C 中 全局变量static 那么该变量就只在.c 文件内有效,本地变量 static 那么该变量就是持久存储,static 的本地变量就是全局变量,static 函数只能在这个 .c 内被访问。 C++ 还有 static 成员变量 和 static 成员函数。

two basic meanings

  • static storage
    • allocated one at fixed address
  • visibility of a name
    • internal linkage
  • don't use static expect inside functions and classed

uses of "static" in c++

static free functionsinternal linkage(deprecated)
static global variablesinternal linkage(deprecated)
static local variablepersistent storage
static member variableshared by all instances
static member functionshared by all instances,can only access static member variables

global static hidden in file   C 语言中

编译器可以过,但是链接不行。 加上static, 变量 s_local 和 函数 hidden,只有在文件1 中可以被访问。

static inside functions  static在函数里面

  • value is remembered for entire program   static 本地变量其实就是全局变量

  • initialization occurs only once    只能在函数内部被访问

  • example

    • count the numbers times the function has been called

      void f(){
          static int num_calls = 0;
          ...
          num_calls++;
      }

static applied to objects   static本地变量类型是个类的话?

它在哪里?   内存

它什么时候被构造出来的?

  • suppose you have a class

    class X{
        X(int ,int);
        ~X();
        ...
    };
  • and a function with a static X object

    void f(){
        static X my_X(10,20); // 可以所有对象都有一个隐藏变量来表示是否初始化过
        ...
    }

    它在哪里和什么时候初始化是不一样的,内存在link的时候已经被分配好了,内存里的变量需要去初始化的,C++可以利用的一点是vPtr,如果如果vPtr被初始化过那么它是有效的东西--vtable的地址,否则是乱七八糟的东西,不是所有的类都有vPtr,目前的格局是实现不了的(通过类的某个已有的成员是实现不了的,想法不错,将来可以自己实现OOP语言)。在java中没有被初始化的东西是不能得到的,只有通过new才行

static applied to objects...

  • construction occurs when definition is encountered
    • constructor called at-most once       构造只发生一次
    • the constructor arguments must be satisfied
  • destruction takes place on exit from program
    • compiler assures LIFO order of destructors

conditional construction

  • example:conditional construction

    void f(int x){
        if(x>10){
            static X my_X(x,x*21);
            ...
        }
    }
  • my_X

    • is constructed once,if f() is ever called with x>10
    • retains its value
    • destroyed only if constructed

本地变量,析构在离开函数时候发生;new delete 时候发生;全局变量 程序结束时候发生。

global objects   全局对象

  • consider

    #include "X.h"
    X gloable_x(12,34);
    X gloable_X2(8,16);

空间:全局数据区;什么时候分配空间:编译或链接时候;什么时候构造:在main()之前。什么调用析构:main() 结束时候或调用了 exit(),就是程序结束时候。

  • constructors are called before main() is entered

    • order controlled by appearance in fine
    • in this case,global_x before global_x2
  • main() is no longer the first function called     程序跑的时候main() 并不是第一个运行的

    • main() exits
    • exit() is called

static initialization dependency     

多个 .cpp 文件,每个文件内都有全局变量,这些全局变量谁先初始化,没有规定,可能每次编译都不一样。它们之间可能有依赖的。跨文件的初始化顺序不行。

解决:1  别这么干   2. 所有的有依赖全局变量放在一个地方  3.像 java 中没有全局变量

  • order of construction within a file is known
  • order between files is unspecified!
  • problem when non-local static objects in different files have dependences
  • a non-local static object is:
    • defined at global or namespace scope
    • declared static in a class
    • defined static at file scope

### 回答1: 翁恺ct-dist的文件夹是指翁恺在编程项目中常用的文件夹之一。CT-Dist是一个常用的开源项目,用于计算文本之间的相似性。在这个项目中,翁恺通常会使用ct-dist文件夹来存放与CT-Dist相关的代码、配置文件和数据文件。 在ct-dist文件夹中,可能会包含以下内容: 1. 源代码文件:这些文件包含了CT-Dist项目的核心代码,用于实现文本相似性计算的算法和功能。这些代码文件通常以.py或.java等编程语言的扩展名为后缀。 2. 配置文件:这些文件用于设置CT-Dist项目的参数和选项,以便根据具体需求对文本相似性计算进行定制。配置文件的内容可以包括输入输出路径、特征提取方法、权重设置等。 3. 数据文件:CT-Dist项目在计算文本相似性时需要使用的数据文件,如语料库、词向量文件等。这些数据文件可以通过配置文件中的路径进行指定,并被代码读取和处理。 除此之外,ct-dist文件夹还可能包含测试文件、文档文件和结果输出文件等。测试文件用于验证CT-Dist项目的正确性和稳定性,文档文件则包含了关于CT-Dist项目的详细说明和使用指南。结果输出文件则保存了CT-Dist计算得到的文本相似性结果。 总之,翁恺ct-dist的文件夹是存放与CT-Dist项目相关的代码、配置文件和数据文件的文件夹。它是翁恺在编程项目中的一个重要组成部分,用于实现文本相似性计算的功能。 ### 回答2: 翁恺ct-dist是一个文件夹,它可能是一个软件项目的一部分。ct-dist是一个常用的命名约定,通常表示"可执行项目的构建产物",也可以解释为"编译和分发的文件夹"。在这个文件夹中,通常包含了经过编译和处理过的项目文件,以便进行部署和分发。 在ct-dist文件夹中,我们通常可以看到一些特定的文件和文件夹。其中包括编译后的可执行文件,如二进制文件或可执行脚本,这些文件通常表示程序的最终产物。还可能包含一些配置文件,用于指定程序的运行环境和参数设置。此外,ct-dist文件夹中还可能包含一些资源文件,如图片、样式文件或其他必要的外部文件,这些文件在程序运行过程中可能需要被引用。 翁恺ct-dist文件夹的存在对于项目的部署和分发非常重要。通过将编译后的可执行文件和其他必要的文件放在同一个文件夹中,开发人员可以方便地进行项目的打包和分发。这样,其他用户或部署人员只需要将整个ct-dist文件夹复制到他们的机器上,即可执行项目,而不需要再去处理源代码或其他依赖项。 总之,翁恺ct-dist文件夹是一个存放编译、处理后的项目文件的文件夹,它对于项目的部署和分发起着重要作用。通过将项目的最终产物和必要的资源文件集中在一个文件夹中,简化了项目的部署过程,使其他用户可以更轻松地使用和执行这个项目。 ### 回答3: 翁恺ct-dist文件夹是一个用于存放由翁恺所开发的CT(Computer Tomography,计算机断层扫描)图像处理程序的文件夹。CT-dist是翁恺开发的一个用于计算机断层扫描图像分析和处理的软件包。 CT(Computer Tomography)是一种医学成像技术,通过利用X射线在人体内进行多个角度的扫描,然后将这些扫描数据进行重建,得到人体不同层面的断层图像。CT图像具有丰富的信息,可以帮助医生进行疾病诊断和治疗方案制定。但是,由于CT图像数据量大、复杂、难以直接观察和分析,因此需要借助计算机进行图像处理和分析。 翁恺ct-dist文件夹中存放的程序主要用于CT图像分析和处理。这些程序包括了一系列的算法和方法,可以实现CT图像的预处理、降噪、增强、分割和三维重建等功能。通过这些程序,医生和研究人员可以提取出感兴趣的区域,进行病变检测和定量分析,从而辅助医学诊断和研究。 翁恺ct-dist文件夹的程序主要基于计算机视觉和数字图像处理的理论和方法。翁恺是计算机视觉和医学图像处理领域的专家,他的研究成果在CT图像分析和处理方面具有重要的应用价值。因此,翁恺ct-dist文件夹中的程序不仅可以促进医学图像处理的研究和发展,同时也对于提高CT图像的质量和临床应用具有重要的意义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

理心炼丹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值