大家好,我去了一家著名的全球性公司面试,担任C++开发人员的职位。我有一个多项选择题的测试,我回答了其中的大多数正确,但其中一些是棘手和糟糕的措辞。我有很多时间,所以我写下了其中一个问题,在我看来,这些问题的措辞很糟糕,所以有问题的确切副本。我只想知道是我还是这个问题故意用词不当。我相信,每一分都是重要的,因为争夺一个职位。
问题:
流动的呼唤会有什么回报?obj1;A. obj1成员函数的大小(以字节为单位) B. obj1中数据的大小。 成员函数的大小和obj1的数据。 没有一个答案是正确的。
我知道答案应该是对象的大小(以字节为单位),我选择了选项C。在我看来,对象包含成员函数(代码段)和数据(静态和动态分配)。测试人员把它标记为错误的答案。
发布于 2015-07-15 02:08:07
答案是D,因为上面的答案都是正确的。填充不是数据的一部分。考虑以下两个例子:
#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个字节的数据类型+填充,同时:
#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是最近的。
发布于 2015-07-15 01:12:10
测试人员是正确的;成员函数不会被视为对象大小的一部分,因为它们在该类的所有实例中共享。
发布于 2016-01-08 16:41:29
答案是D,它返回对象在内存中所占的大小,根据定义至少应该是1。此大小包括数据、虚拟函数表和填充字节。成员函数不占用空间,它们只是以'this‘作为第一个参数的函数。一个“新”运算符实际上使用的是带大小的malloc。
https://stackoverflow.com/questions/31419825
复制相似问题