table。
④加强destructor,使它能够抹消“指向class之相关virtualtable”的vptr。记
住destructor的调用次序是反向的:从derivedclass到base class。
所有的编译器不是吧vptr放在对象的头部,就是放在对象的尾部。
五指向Data Members的指针
/*
Pointer to Data Members
*/
#include
usingnamespace std;
?
classPoint3d
{
virtual ~Point3d();
?
public:
static Point3d origin;
float x, y, z;
};
intmain()
{
//类型为floatPoint3d::*而并不是float*
printf(&Point3d::x =%p , &Point3d::x);
printf(&Point3d::y =%p , &Point3d::y);
printf(&Point3d::z =%p , &Point3d::z);
}
?
#include
usingnamespace std;
structPoint
{
int x, y;
double d1, d2;
}
intAdd(Point arr[], int size, int Point::*p)
{
int sum = 0;
for(int i = 0; i < size; i ++)
sum += arr[i].*p;
return sum;
}
?
doubleAdd1(Point arr[], int size, double Point::*p)
{
int sum = 0;
for(int i = 0; i < size; i ++)
sum += arr[i].*p;
return sum;
};
?
intmain()
{
Point pp[3] = { {1,2,1.0,2.0},{3,4,1.0,2.0}, {5,6,1.0,2.0} };
cout<
cout<
}
?