按照C/C++的语法,指针和对象确实是截然不同的东西,但是我们分析问题时还要看到问题的实质。
当我们取得一个指向对象的指针后,我们可以通过这个指针访问这个对象,和取得这个对象本身具有完全相同的访问能力,因此拥有一个指向对象的指针可以看作就是拥有了这个对象。如果这样还有人说指针和对象就是不同的话,那么我只能说:阁下的治学态度真是很严谨。
另外18楼的说法不妥:
1。虚函数表指针确实是编译器加上去的,但是这个指针是由构造函数初始化,由析构函数破坏的。(可能又有人说构造函数初始化虚表指针的语句还是编译器加的,我无语)
2。每个对象只包含一个VPTR是不对的。例如
class A:public B, public C
其中B和C都有虚函数,那么A就有两个虚函数表,如果A *a = new A;那么两个虚函数表指针的地址分别在(void *)a处和(void *)a+sizeof(B)处