如何保存派生对象的基指针仍指向基函数?在这之后
a_ptr = &b_obj;
a_ptr->disp();
Run Code Online (Sandbox Code Playgroud)
如果基本函数是虚拟的,我理解V-table的参与,它将地址保存到基函数.但是这里基本指针hodling派生对象可以管理调用基函数.
任何人都可以对幕后发生的事情有所了解吗?
class A
{
public:
//virtual void disp()
void disp()
{ cout<< "From class A\n" << endl; }
};
class B : public A
{
public:
void disp()
{ cout << "From Class B\n" <<endl; }
};
int main()
{
A a_obj;
A *a_ptr;
B b_obj;
a_ptr = &a_obj;
a_ptr->disp();
a_ptr = &b_obj;
a_ptr->disp();
}
Run Code Online (Sandbox Code Playgroud) 在下面的代码中,变量'b'保持值'133',这非常简单.变量'a'怎么样?为什么'131'?
我看到唯一的区别是'015'而不是'15'.
#include<stdio.h>
int main()
{
int a,b,c;
a=015 + 0x71 +5;
printf("%d\n",a); // prints '131'
b=15 + 0x71 +5;
printf("%d\n",b); // prints '133'
}
Run Code Online (Sandbox Code Playgroud)
有人能让我知道这里发生了什么事吗?