如果向量成员存在于 class 中,为什么要初始化基本类型 int x?

Why fundamental type int x gets initialized if a vector member is present in a class?

如果我用另一个基本类型变量(例如 int y)替换 vector 成员,x 不会像预期的那样被初始化。 vector 成员对成员 x 做了什么,这使得 x 被初始化,即使它在声明时没有被初始化并且基本类型不应该在创建时被初始化?

#include <vector>
#include <iostream>

class Buffer
{
private:
    std::vector<char> buffer;
    int x;
public:
    Buffer(int width, int height) // buffer gets initialized to size 0, and x gets initialized to 0
    {
        buffer.resize(width * height); // buffer gets resized to argument values
    }
};


int main()
{
    Buffer screen_2(10,10); // member x get initialized to 0

    return 0;
}

x 未初始化。从中读取会导致未定义的行为,这可能会产生任何影响,包括每次给你 0

您可以检查生成的程序集以了解到底发生了什么,但我看不出它有多大价值。