近日看《Inside the c++ object model》。看到使用memcpy为对象赋值。当时真是捶胸顿足啊。怎么就没有想到用这么简单的,高效的方法为对象赋值呢?看来得回头改改我的代码了。
代码如下
Point3D(const Point3D & pt);
void Print()
{
cout << "X = " << x
<< " Y = " << y
<< " Z = " << z << endl;
}
int x;
int y;
int z;
};
Point3D::Point3D(const Point3D & pt)
{
memcpy(this, &pt, sizeof(Point3D));
}
int main()
{
Point3D pt;
pt.x = 3;
pt.y = 6;
pt.z = 9;
Point3D pt2 = pt;
pt.Print();
cin.get();
return 0;
}
在我见过的Point类中,大部分都是这样写的
Point3D::Point3D(const Point3D & pt)
{
x = pt.x;
y = pt.y;
z = pt.z;
}
这就是差距呀。