游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1154|回复: 1

新手问题:帮忙详细解释一下,谢谢

[复制链接]

18

主题

21

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2007-6-7 12:26:00 | 显示全部楼层 |阅读模式
Particles:articles(float x, float y, float z)
const Particles& Particles:perator = (const Particles &p)
Particles::Particles(const Particles &p)
小弟初学c++,哪位大哥帮我详细解释一下这三句话的区别以及这三句话分别实现什么功能,特别是后面两句的区别...谢谢.. [em16]

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2007-6-8 17:38:00 | 显示全部楼层

Re:新手问题:帮忙详细解释一下,谢谢



  1. class Particles
  2. {
  3.     float m_x;
  4.     float m_y;
  5.     float m_z;

  6. public:
  7.     Particles(float x,float y,float z)
  8.     {
  9.         m_x = x;
  10.         m_y = y;
  11.         m_z = z;
  12.     }

  13.     Particles(const Particles& p)
  14.     {
  15.         m_x = p.m_x;
  16.         m_y = p.m_y;
  17.         m_z = p.m_z;
  18.     }

  19.     const Particles& operator=(const Particles& rhs)
  20.     {
  21.         m_x = rhs.m_x;
  22.         m_y = rhs.m_y;
  23.         m_z = rhs.m_z;

  24.         return (*this);
  25.     }

  26.     //...
  27. };

  28. int main(int argc,char *argv[])
  29. {
  30.     Particles p1(1.0f,2.0f,1.0f); //调用 Particles(float x,float y,float z)
  31.     Particles p2(p1); //调用 Particles(const Particles& p)

  32.     Particles p3 = p2; //调用 Particles(const Particles& p)
  33.     p3 = p2; //调用 operator=

  34.     return 0;
  35. }


复制代码


如果自己不写拷贝构造函数和赋值运算符,系统会进行浅拷贝,在有指针型成员变量的时候可能会出问题
构造函数是在对象创建时调用的,operator=不是,而且返回const Particles&方便写 p1=p2=p3
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 05:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表