相关疑难解决方法(0)

零初始化和本地范围静态变量的静态初始化

我在Google 上阅读了几篇关于C++初始化的帖子,其中一些文章指导我在StackOverflow上.我从这些帖子中挑选的概念如下:

  • 顺序 C++的初始化的是:
    1. 零初始化 ;
    2. 静态初始化 ;
    3. 动态初始化.
  • 静态对象(包括变量)首先进行零初始化,然后进行静态初始化.

我有几个关于初始化问题的查询(存储类问题也可能相关):

  • 全局对象(没有静态关键字定义)也是静态对象,对吧?
  • 全局对象也像上面的两个步骤一样初始化为静态对象,对吗?
  • 什么是静态初始化?它是指初始化静态对象(使用static关键字定义)?
  • 我还读到当执行线程首次进入块时,使用static关键字在块(即在函数中)中定义的对象被初始化!这意味着在执行函数之前不会初始化本地静态对象.这意味着它们没有被初始化为上面提到的两个步骤,对吗?
  • 动态初始化是指由new运算符创建的对象的初始化,对吧?它可能会引用初始化,如myClass obj = myClass(100);myClass obj = foo();

我对初始化和存储类说明符问题的查询太多了.我阅读了C++ 2003标准文档,但由于它们分散在整个文档中,所以无法找到明确的逻辑.

我希望你给我一个答案,从逻辑上解释存储类说明符和初始化的整个映射.欢迎任何参考!

代码可以解释我的问题:

class myClass{
public:
   int i;
   myClass(int j = 10): j(i){}
   // other declarations
};

myClass …
Run Code Online (Sandbox Code Playgroud)

c++ static initialization global-variables

9
推荐指数
1
解决办法
7298
查看次数

标签 统计

c++ ×1

global-variables ×1

initialization ×1

static ×1