鱼C论坛

 找回密码
 立即注册
查看: 636|回复: 10

[已解决]说出以下程序的输出结果并说明理由

[复制链接]
发表于 2020-7-18 15:27:44 | 显示全部楼层 |阅读模式
10鱼币
  1. #include <iostream>
  2. using namespace std;

  3. class A
  4. {
  5. public:
  6.         int data;
  7.         void func() {}
  8. };

  9. class B
  10. {
  11. public:
  12.         int data;
  13.         virtual void func() {}
  14. };

  15. int main()
  16. {
  17.         cout << sizeof(A) << endl;
  18.         cout << sizeof(B) << endl;

  19.         return 0;
  20. }
复制代码

快而准确地回答答案的将获得10鱼币~
最佳答案
2020-7-18 15:27:45
vptr指针,指向虚函数表

最佳答案

查看完整内容

vptr指针,指向虚函数表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-18 15:27:45 | 显示全部楼层    本楼为最佳答案   
vptr指针,指向虚函数表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-19 09:50:06 | 显示全部楼层
没人要这10鱼币吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-19 11:35:29 | 显示全部楼层
c++ 不知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-19 12:55:24 | 显示全部楼层
跟32和64位编译器、字节对齐有关
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-19 15:32:20 | 显示全部楼层
本帖最后由 xiaosi4081 于 2020-7-19 15:50 编辑
  1. #include <iostream>
  2. using namespace std;

  3. class A
  4. {
  5. public:
  6.         int data;
  7.         void func() {}
  8. };

  9. class B
  10. {
  11. public:
  12.         int data;
  13.         virtual void func() {}
  14. };

  15. int main()
  16. {
  17.         cout << sizeof(A) << endl; //输出4,因为一个是int,一个是空函数
  18.         cout << sizeof(B) << endl;//输出12,因为B有虚函数

  19.         return 0;
  20. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-19 15:47:29 | 显示全部楼层

第一个是4只有一个整形需要分配空间,第二个有一个整形和一个指针,指针在32位是4个字节,在64位是8个字节,8个字节出现字节对齐,4+4+8输出16
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-19 15:48:50 | 显示全部楼层

运行的答案不会是你注释的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-19 18:09:23 | 显示全部楼层

请详细说明一下,为什么有虚函数就会多一个指针?
或者说,这个指针是指向什么的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-19 18:10:05 | 显示全部楼层
baige 发表于 2020-7-19 12:55
跟32和64位编译器、字节对齐有关

是32位编译器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-19 18:10:48 | 显示全部楼层
baige 发表于 2020-7-19 15:47
第一个是4只有一个整形需要分配空间,第二个有一个整形和一个指针,指针在32位是4个字节,在64位是8个字 ...

请详细说明一下,这个指针是指向什么的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-3 18:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表