相关疑难解决方法(0)

C++中的POD类型是什么?

我有几次遇到这个术语POD型.这是什么意思?

c++ types c++-faq

919
推荐指数
8
解决办法
29万
查看次数

什么是在C++中默认初始化的基本类型?

当我使用初始化列表时:

struct Struct {
    Struct() : memberVariable() {}
    int memberVariable;
};
Run Code Online (Sandbox Code Playgroud)

基本类型(int,bool,float,enum,指针)成员变量是默认-initialied.是实现定义的值还是所有实现都相同?

c++ initialization

34
推荐指数
3
解决办法
3万
查看次数

C++默认构造函数不初始化指向nullptr的指针?

我想知道A*我的课程中是否有成员,nullptr如果我有这种形式的班级构造函数,我们不应该自动设置:

class MyCLass
{
    A* m_pointer;

public:
    MyCLass()
    {
    }
};
Run Code Online (Sandbox Code Playgroud)

如果我在C++ 11中做MyCLass* o = new MyCLass;或不做 MyCLass* o = new MyCLass();,这有关系吗?

c++

7
推荐指数
1
解决办法
8500
查看次数

该变量将如何初始化?

我有以下内容

char mem_pool[1024*1024*64]; 

int main() {
    // ... 
}
Run Code Online (Sandbox Code Playgroud)

我试图彻底了解如何mem_pool初始化.经过大量的搜索,我的结论是:

  • 它是一个静态初始化(不是在static关键字中,而是在"在程序之前运行 - 在静态初始化阶段")
  • 它将分两个阶段运行:零初始化和默认初始化(第二阶段不会做任何事情)
  • 它是一个POD数组,因此应该应用每个元素的默认初始化,但由于前两个点,我们将不会有一个不确定值的数组(就像我们char ar[N]在函数作用域中所做的那样),而是一个零数组.

有人可以帮助我消除语言所保证的内容,如果我错了,还要纠正我吗?

我还想过做以下任何事情

char mem_pool[1024*1024*64] {}; 
char mem_pool[1024*1024*64] = ""; 
Run Code Online (Sandbox Code Playgroud)

我怀疑这是一个更好/推荐的做法,但现在我需要了解我的初步问题.

c++ language-lawyer

5
推荐指数
1
解决办法
145
查看次数

C++ - 非本地静态对象与本地静态对象

关于Scot Meyers的"Effective C++"和第4项:非本地静态对象在使用之前可以是未初始化的(静态在这种情况下意味着"全局",具有静态生命).如果将其替换static为在返回对它的引用的函数内创建的local- 对象,则在使用之前确定该对象已初始化.

我总是有一个常量文件.我extern const int a;在.hpp文件中声明并在.cpp文件中定义它.但那么同样的事情会发生吗?a可以是未初始化的.或不?同样的规则是否适用于内置类型?

c++

5
推荐指数
1
解决办法
863
查看次数

C++ 结构体的存储持续时间和成员初始化

#include <iostream>

using namespace std;

struct A {
    // Some Other Code
    int x;
};

A a1;

int main(){
    A a2;
    cout << "a1.x = " << a1.x << endl;
    cout << "a2.x = " << a2.x << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

C++14 标准 (ISO/IEC 14882:2014) 第 8.5 节,第 12 段:

如果没有为对象指定初始化程序,则该对象是默认初始化的。当获得具有自动或动态存储期限的对象的存储时,该对象具有不确定值,如果没有对该对象执行初始化,则该对象保留一个不确定值,直到该值被替换(5.17)。[注意:具有静态或线程存储持续时间的对象是零初始化的,参见 3.6.2。- 尾注]

那么a1有静态存储持续时间和a2自动存储持续时间吗?的定义Struct A在全局命名空间以及a1声明中,而a2声明在块范围内(在main()函数内部)。

此外,第 3.6.2 节说:

第 1 段:

作为程序启动的结果,具有静态存储持续时间的非局部变量被初始化。

第 2 段: …

c++ struct initialization member storage-duration

3
推荐指数
1
解决办法
820
查看次数