C++中两个对象地址雷同,调用同一方法返回值不同
C++中两个对象地址相同,调用同一方法返回值不同
遇到过这样的现象吗
或者在python等语言中有这样的现象?
------解决方案--------------------
一种可能,不同派生类的虚函数
------解决方案--------------------
除了const函数重载我想不到其他方面可以。
你检查前后代码是否有对对象的属性进行改变的操作。
------解决方案--------------------
《深度探索C++对象模型》
《C++反汇编与逆向分析技术揭秘》
------解决方案--------------------
可能性有很多
随便说一个
------解决方案--------------------
同一个进程获取的吗?建议楼主提问的时候写的再详尽一些
------解决方案--------------------
多态而已,要看函数的地址才行
------解决方案--------------------
错了吧?虚函数才不会(除非在构造和析构期间),非虚函数才会
遇到过这样的现象吗
或者在python等语言中有这样的现象?
------解决方案--------------------
一种可能,不同派生类的虚函数
------解决方案--------------------
除了const函数重载我想不到其他方面可以。
你检查前后代码是否有对对象的属性进行改变的操作。
------解决方案--------------------
《深度探索C++对象模型》
《C++反汇编与逆向分析技术揭秘》
------解决方案--------------------
可能性有很多
随便说一个
struct A
{
int pt() { return 1; }
};
struct B :public A
{
int pt() { return 2; }
};
void Test( A* a, B*b )
{
printf( "a is %d\n" , a->pt());
printf( "b is %d\n" , b->pt());
}
int main()
{
B b;
Test( &b, &b );
return 0;
}
------解决方案--------------------
同一个进程获取的吗?建议楼主提问的时候写的再详尽一些
------解决方案--------------------
多态而已,要看函数的地址才行
------解决方案--------------------
错了吧?虚函数才不会(除非在构造和析构期间),非虚函数才会