注册 登录
编程论坛 C++教室

这道题结果为什么是8?

xzy199999 发布于 2011-07-08 17:52, 842 次点击
#include <iostream>
#include <cstring>
using namespace std;
class A
{
private:
    int num;
public:
    A(){}
    A(int num){this->num=num;}
    virtual ~A(){}
};
int main()
{
    A a;
    cout<<sizeof(a)<<endl;
    return 0;
}
10 回复
#2
ToBeStronger2011-07-08 18:23
虚函数大小是4,再加上一个int变量大小为4
#3
xzy1999992011-07-08 20:23
只要是虚函数,就一定是4字节吗
#4
pangding2011-07-08 23:19
sizeof 的结果大多都和编译器有关。一般不用在意。
#5
zhangqi_gsts2011-07-21 23:52
用sizeof输出时,函数的大小也会输出来?
#6
jcw08122011-08-05 12:08
一般般 受教
#7
xinshou19912011-08-05 15:24
下面是调用过程:
#include <iostream>
#include <cstring>
using namespace std;
class A
{
private:
    int num;
public:
    A(){}//第二步
    A(int num){this->num=num;}
    virtual ~A(){}//第六步
};
int main()
{
    A a;//第一步和第三步
    cout<<sizeof(a)<<endl;//第四步
    return 0;//第五步和第七步
}
因为调用了第一步和第二步,"A a"用了两次,所以第四步调用sizeof()时,结果输出8;
#8
jcw08122011-08-17 15:39
de fgdfghsdfg
#9
wenxinwukui2011-08-18 12:21
只要是类中有虚函数,编译器会自动在类中加上一个指向对应虚函数表的指针,在32位的机器上一个指针是4个字节,而类中一个int变量也是4个字节,所以输出结果为8个字节。
#10
开了口的记忆2011-08-24 16:25
因为一个指针是4个字节,而类中一个int变量也是4个字节,所以输出结果为8个字节。
#11
hdh123aa2011-08-24 21:25
这个老师讲过,但是在这里看到别人的回答才想得起。。。
1