说出以下程序的输出结果并说明理由
#include <iostream>using namespace std;
class A
{
public:
int data;
void func() {}
};
class B
{
public:
int data;
virtual void func() {}
};
int main()
{
cout << sizeof(A) << endl;
cout << sizeof(B) << endl;
return 0;
}
快而准确地回答答案的将获得10鱼币~ vptr指针,指向虚函数表 没人要这10鱼币吗? c++ 不知道 跟32和64位编译器、字节对齐有关 本帖最后由 xiaosi4081 于 2020-7-19 15:50 编辑
#include <iostream>
using namespace std;
class A
{
public:
int data;
void func() {}
};
class B
{
public:
int data;
virtual void func() {}
};
int main()
{
cout << sizeof(A) << endl; //输出4,因为一个是int,一个是空函数
cout << sizeof(B) << endl;//输出12,因为B有虚函数
return 0;
}
xiaosi4081 发表于 2020-7-19 15:32
第一个是4只有一个整形需要分配空间,第二个有一个整形和一个指针,指针在32位是4个字节,在64位是8个字节,8个字节出现字节对齐,4+4+8输出16 xiaosi4081 发表于 2020-7-19 15:32
运行的答案不会是你注释的 xiaosi4081 发表于 2020-7-19 15:32
请详细说明一下,为什么有虚函数就会多一个指针?
或者说,这个指针是指向什么的? baige 发表于 2020-7-19 12:55
跟32和64位编译器、字节对齐有关
是32位编译器 baige 发表于 2020-7-19 15:47
第一个是4只有一个整形需要分配空间,第二个有一个整形和一个指针,指针在32位是4个字节,在64位是8个字 ...
请详细说明一下,这个指针是指向什么的?
页:
[1]