虚函数占用对象的存储空间?
#include <iostream>
using namespace std;
class Student
{
public:
void display();
int haha;
};
void Student::display()
{
}
class Student1:protected Student
{
public:
int age;
};
int main()
{
Student stud;
Student1 stud1;
cout<<sizeof(stud1)<<endl;
cout<<sizeof(stud)<<endl;
return 0;
}
输出:
8
4
而将上面红色代码部分改为虚函数virtual void display();后,再运行程序,输出结果为:
12
8
为什么会这样呢?是虚函数占用了内存么?但是在第一段程序中再加上一个虚函数,代码如下:
#include <iostream>
using namespace std;
class Student
{
public:
virtual void display();
virtual void display1();
int haha;
};
void Student::display()
{
}
void Student::display1()
{
}
class Student1:protected Student
{
public:
int age;
};
int main()
{
Student stud;
Student1 stud1;
cout<<sizeof(stud1)<<endl;
cout<<sizeof(stud)<<endl;
return 0;
}
运行此程序,结果还是12和8。
为什么呢?
请高手们帮忙解决。