在下面的代码中有两个类。创建一个类型二的对象,然后将其分配给类一的指针。
在调用 out 函数时,调用第一类的 out 函数。
#include<iostream>
using namespace std;
class one
{
public :
void out()
{
cout<<"one ";
}
};
class two
{
public :
void out()
{
cout<<"two ";
}
};
int main()
{
two dp[3];
one *bp = (one *)dp;
for (int i=0; i<3;i++)
(bp++)->out();
}
输出
one one one
根据我的输出应该是两个而不是一个。当我们创建类型二的对象时,该对象的内存位置包含类外函数的地址,那么为什么在赋值时调用类外函数呢?
编辑-此外,即使我们更改了第二类中的函数名称,输出也不会更改。