c++ - 对象的大小与没有指针的类的大小不同

标签 c++ class

<分区>

谁能告诉我一个对象大小与类大小不同的情况。

假设我有一个

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/

相关文章:

Python - self ,没有 self 和 cls

class - Yii2 在 afterLogin() 方法中包含函数?

java - 如何正确调用方法

c++ - "#define"和 inline 的行为是否相同?

c++ - 溢出检测

c++ - 使用 Qt5.3.2 在 Linux 上禁用关闭和最小化按钮

c++ - 临时 shared_ptr 对象的生命周期

C++ concat const char 与来自#define 的值

c++ - 为什么使用函数而不是对成员的引用?

python - 我可以用 f2py 创建一个类吗?