敲什么敲
我写了之后才知道,光是想写是不够的,要学的东西还有很多很多。

1、拷贝构造赋值函数的区别:

1)拷贝构造函数是一个对象初始化一块内存区域,这块内存就是新对象的内存区,而赋值函数是对于一个已经被初始化的对象来进行赋值操作。

2)一般来说在数据成员包含指针对象的时候,需要考虑两种不同的处理需求:一种是复制指针对象,另一种是引用指针对象。拷贝构造函数大多数情况下是复制,而赋值函数是引用对象。

3)实现不一样。拷贝构造函数首先是一个构造函数,它调用时候是通过参数的对象初始化产生一个对象。赋值函数则是把一个新的对象赋值给一个原有的对象,所以如果原来的对象中有内存分配要先把内存释放掉,而且还要检察一下两个对象是不是同一个对象,如果是,不做任何操作,直接返回。

例:

Animal & operator = (const  Animal& ani)

{

  if (this != &ani)

  {

    this.m_color = ani.m_color;

    this.m_life = ani.m_life;

  }

  return *this;

}

2、在C++中,3种对象需要复制,此时拷贝构造函数会被调用。

1)一个对象以值传递的方式传入函数体。

2)一个对象以值传递的方式从函数返回。

3)一个对象需要通过另一个对象进行初始化。

posted on 2022-12-13 19:01  敲什么敲  阅读(109)  评论(0编辑  收藏  举报