首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >面试问题?

面试问题?
EN

Stack Overflow用户
提问于 2015-07-15 01:05:41
回答 3查看 945关注 0票数 3

大家好,我去了一家著名的全球性公司面试,担任C++开发人员的职位。我有一个多项选择题的测试,我回答了其中的大多数正确,但其中一些是棘手和糟糕的措辞。我有很多时间,所以我写下了其中一个问题,在我看来,这些问题的措辞很糟糕,所以有问题的确切副本。我只想知道是我还是这个问题故意用词不当。我相信,每一分都是重要的,因为争夺一个职位。

问题:

流动的呼唤会有什么回报?obj1;A. obj1成员函数的大小(以字节为单位) B. obj1中数据的大小。 成员函数的大小和obj1的数据。 没有一个答案是正确的。

我知道答案应该是对象的大小(以字节为单位),我选择了选项C。在我看来,对象包含成员函数(代码段)和数据(静态和动态分配)。测试人员把它标记为错误的答案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-15 02:08:07

答案是D,因为上面的答案都是正确的。填充不是数据的一部分。考虑以下两个例子:

代码语言:javascript
复制
#include <iostream>

struct test
{
    int x;
    int y;
    double d;
    test(){}
};

int main()
{
    test t;
    std::cout << sizeof(t) << std::endl;

    std::cin.get();
    return 0;
}

将返回16个字节的数据类型+填充,同时:

代码语言:javascript
复制
#include <iostream>

struct test
{
    int x;
    double d;
    int y;
    test(){}
};

int main()
{
    test t;
    std::cout << sizeof(t) << std::endl;

    std::cin.get();
    return 0;
}

返回数据类型+填充的24个字节。所以int不会因为数据对齐不同而变大。所以它不是B,也不是其他答案,所以D是最近的。

票数 2
EN

Stack Overflow用户

发布于 2015-07-15 01:12:10

测试人员是正确的;成员函数不会被视为对象大小的一部分,因为它们在该类的所有实例中共享。

票数 3
EN

Stack Overflow用户

发布于 2016-01-08 16:41:29

答案是D,它返回对象在内存中所占的大小,根据定义至少应该是1。此大小包括数据、虚拟函数表和填充字节。成员函数不占用空间,它们只是以'this‘作为第一个参数的函数。一个“新”运算符实际上使用的是带大小的malloc。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31419825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档