LINUX.ORG.RU

История изменений

Исправление AIv, (текущая версия) :

Пойнтер на таблицу лежит непосредственно перед объектом, какие проблемы их достать и сравнить для двух объектов? Если совпадают тип один, не совпадают - разные.

С-но пойнтер на объект именно на пойнтер на таблицу и указывает ЕМНИП (если объект вирт). Т.е. что то вроде

*((*long)p1)==*((*long)p2)

ЗЫ mashina опередил;-)

aiv@aivbook:~/tmp$ cat test2.cpp
#include <iostream>
using namespace std;

class A{
        virtual void f() = 0;
};
class B: public A{
        void f(){}
};
class C: public A{
        void f(){}
};

int main(){
        B b1, b2; C c;
        cout<<*(long*)&b1<<" "<<*(long*)&b2<<" "<<*(long*)&c<<endl;
        return 0;
}
aiv@aivbook:~/tmp$ g++ -o test2 test2.cpp 
aiv@aivbook:~/tmp$ ./test2
4197712 4197712 4197680

Исходная версия AIv, :

Пойнтер на таблицу лежит непосредственно перед объектом, какие проблемы их достать и сравнить для двух объектов? Если совпадают тип один, не совпадают - разные.

С-но пойнтер на объект именно на пойнтер на таблицу и указывает ЕМНИП (если объект вирт). Т.е. что то вроде

*((*long)p1)==*((*long)p2)