次のコードの場合
class A
{
public:
~A()
{
std::cout << "a" << std::endl;
}
};
class B : public A {
public:
virtual ~B()
{
std::cout << "b" << std::endl;
}
};
int main()
{
B* b = new B();
A* a = b;
if (a == b)
{
}
delete a;
}
問題は、「a」は「b」と等しいでしょうか?なぜ、どのようにこれが起こったのですか?では、ポインターとは実際には何を意味するのでしょうか。アドレスとメモリブロックの長さだけではありませんか?