Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 定义类时,公共成员变量存储在哪里?_C++_Class_C++11 - Fatal编程技术网

C++ 定义类时,公共成员变量存储在哪里?

C++ 定义类时,公共成员变量存储在哪里?,c++,class,c++11,C++,Class,C++11,我定义了一个简单的类: class A { public: int a; }; sizeof(A)是4,所以我很困惑,当我刚刚定义这样一个类时,公共成员变量A存储在哪里?堆叠还是堆积 它不存储在任何地方。只有当您实际创建类型为a的对象时,它才会在内存中接收一个位置 int main() { A obj1; // obj1.a will be on the "stack" A* pObj2 = new A; // pObj2->a will be on the "hea

我定义了一个简单的类:

class A
{
public:
    int a;
};

sizeof(A)
是4,所以我很困惑,当我刚刚定义这样一个类时,公共成员变量
A
存储在哪里?堆叠还是堆积

它不存储在任何地方。只有当您实际创建类型为
a
的对象时,它才会在内存中接收一个位置

int main()
{
   A obj1; // obj1.a will be on the "stack"
   A* pObj2 = new A; // pObj2->a will be on the "heap"
}

它没有存放在任何地方。只有当您实际创建类型为
a
的对象时,它才会在内存中接收一个位置

int main()
{
   A obj1; // obj1.a will be on the "stack"
   A* pObj2 = new A; // pObj2->a will be on the "heap"
}


类是一个“蓝图”——你需要一个实例来知道数据存储在哪里。此外,这实际上是关于存储持续时间,因为C++标准没有定义“堆栈”和“堆”要求,而且在C++标准中没有类似堆栈或堆分配的概念,这将取决于该类的实例化方式及其内存分配位置。@那么,为什么该类占用4种类型?您所说的类型是什么意思?4是正则整数的大小。如果sizeof int是4,那么它就是4,它不会神奇地改变,请记住
sizeof
在编译时执行其操作。类是一个“蓝图”—您需要一个实例来知道数据存储在何处。此外,这实际上是关于存储持续时间,因为C++标准没有定义“堆栈”和“堆”要求,而且在C++标准中没有类似堆栈或堆分配的概念,这将取决于该类的实例化方式及其内存分配位置。@那么,为什么该类占用4种类型?您所说的类型是什么意思?4是一个正则整数的大小。如果sizeof int是4,那么它是4,它不会神奇地改变,请记住
sizeof
在编译时执行其操作。我不是指创建对象的方法。如果变量a没有存储在任何地方,为什么类a会占用4种类型?@AndrewGong类a没有。它的大小是4-但这会告诉你创建对象时对象的大小。对不起,我还是不明白如果类A没有像你说的那样使用4种类型,为什么sizeof(A)是4~~@AndrewGong认为
sizeof(A)
是一个
A
类型的对象所需要的存储量,而不管它的内存是什么。@AndrewGong如果我画一个房子的建筑草图,我可以说它的大小是5米,然而,在我建造房子之前,房子没有任何实际大小。我不是指创建对象的方法。如果变量a没有存储在任何地方,为什么类a会占用4种类型?@AndrewGong类a没有。它的大小是4-但这会告诉你创建对象时对象的大小。对不起,我还是不明白如果类A没有像你说的那样使用4种类型,为什么sizeof(A)是4~~@AndrewGong认为
sizeof(A)
A
类型的对象所能占用的存储量,而不考虑它所处的内存。@AndrewGong如果我画一座房子的建筑草图,我可以说它的尺寸是5米,但是在我建造它之前,没有房子的实际尺寸。