|
|
发表于 2007-6-8 17:38:00
|
显示全部楼层
Re:新手问题:帮忙详细解释一下,谢谢
- class Particles
- {
- float m_x;
- float m_y;
- float m_z;
- public:
- Particles(float x,float y,float z)
- {
- m_x = x;
- m_y = y;
- m_z = z;
- }
- Particles(const Particles& p)
- {
- m_x = p.m_x;
- m_y = p.m_y;
- m_z = p.m_z;
- }
- const Particles& operator=(const Particles& rhs)
- {
- m_x = rhs.m_x;
- m_y = rhs.m_y;
- m_z = rhs.m_z;
- return (*this);
- }
- //...
- };
- int main(int argc,char *argv[])
- {
- Particles p1(1.0f,2.0f,1.0f); //调用 Particles(float x,float y,float z)
- Particles p2(p1); //调用 Particles(const Particles& p)
- Particles p3 = p2; //调用 Particles(const Particles& p)
- p3 = p2; //调用 operator=
- return 0;
- }
复制代码
如果自己不写拷贝构造函数和赋值运算符,系统会进行浅拷贝,在有指针型成员变量的时候可能会出问题
构造函数是在对象创建时调用的,operator=不是,而且返回const Particles&方便写 p1=p2=p3 |
|