<分区>
谁能告诉我一个对象大小与类大小不同的情况。
假设我有一个
class A {
// I don't know what content can cause this.
};
sizeof(A)!=sizeof(*(new A()))
注意:类不应包含任何指针。
<分区>
谁能告诉我一个对象大小与类大小不同的情况。
假设我有一个
class A {
// I don't know what content can cause this.
};
sizeof(A)!=sizeof(*(new A()))
注意:类不应包含任何指针。
最佳答案
这两个是不同的尺寸。我并没有试图“解释”你关于对象和类大小的问题,我只是试图设计一种情况,其中 sizeof(A)!=sizeof(*(new A()))
。
(此外,这个问题显然确实说了 class A {...};
。在那种情况下,大小是相同的。但我允许自己以不同的方式定义 A 以设计一个答案.所以,我想我没有回答问题,我回答了我想听的问题!)
#include<iostream>
using namespace std;
typedef int A[10];
int main() {
cout << sizeof(A) << endl; // 40 (on 32-bit machines)
cout << sizeof(*(new A())) << endl; // 4 (on 32-bit machines)
}
更新, 我想我可以解释一下。当 T
是数组类型 T = X[n]
时,指针衰减开始,new T
变为 new (X* )
。这可以解释我得到的数字。有人得到相关的标准报价吗?
因此 sizeof(A)
是 10*sizeof(int)
,但是 sizeof(*(new A()))
变成了 sizeof(int*)
。
关于c++ - 对象的大小与没有指针的类的大小不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19960649/