关于C++程序的执行结果?(急急急,谢谢谢)

来源:百度知道 编辑:UC知道 时间:2024/06/30 10:42:48
关于C++程序的执行结果?
下面的程序中类A的对象的长度是多少呢?为什么?
#include "iostream.h"
#include "string.h"

class A {
public:
virtual void fun0() { cout << "A::fun0" << endl; }
};

int main(int argc, char* argv[])
{
A a;
cout << "Size of A = " << sizeof(a) << endl;
return 0;
}
To:ch_cityhunter
你回答对了,我就是想知道加不加virtual为什么结果不一样?具体一点吧?

A没有任何成员变量,因此存储内容只有一个虚函数表的指针
sizeof(a)就是这个指针的大小

在一般的32位系统上,sizeof(a) = 4
在64位系统上,sizeof(a) = 8

--------------------Configuration: Test - Win32 Debug--------------------
Compiling...
A.cpp
d:\vc++\vc++\msdev98\myprojects\test\a.cpp(12) : error C2084: function '__thiscall A::A(void)' already has a body
d:\vc++\vc++\msdev98\myprojects\test\a.cpp(17) : error C2600: 'A::~A' : cannot define a compiler-generated special member function (must be declared in the class first)
执行 cl.exe 时出错.

答案:4
不加虚函数标志时答案:1

楼主,注意了,你想了解虚函数的话,我给你提供下面的一篇文章,对

虚函数的解释非常清楚,图文并茂,保证你清清楚楚!

http://www.vckbase.com/document/viewdoc/?id=950

一看就知道是:sizeof(A)=4;

1L解释正确.

另外,请请请参阅:《深度探索C++对象模型》

Size of A = 4
大概是虚表的大小
如果成员函数