C++知识点

Contents
[隐藏]

1.操作符重载

1.1.赋值运算符重载

  • 返回值的类型为引用,并在函数结束前返回实例自身的引用(*this)。但是返回引用的目的不是为了允许连续赋值,因为返回实例本身也可以连续赋值。返回引用是为了提高效率。如果返回实例,赋值运算符重载函数会自动调用拷贝构造函数创建一个临时对象,并在连续赋值完毕后自动调用析构函数,增加了程序开销。另外,如果没有自己定义性能良好的拷贝构造函数,会调用默认拷贝构造函数。而默认拷贝构造函数的是浅拷贝,当实例中有指针时,无法正确拷贝一个实例。需要注意的是,当返回值的类型为引用时,赋值操作符号返回一个reference(引用)指向操作符号的左侧实参(而事实上重载运算符的左侧实参就是调用对象本身)。
  • 传入的参数应该是常量引用。引用的目的是为了不调用拷贝构造函数,常量的目的是在赋值操作符重载函数中不会修改传入的参数。
  • 是否释放已有的内存。如果我们忘记在分配新内存之前释放自身已有的空间,则程序将出现内存泄漏。
  • 判断传入的参数是不是当前的实例(*this)。如果事先不判断就赋值,那么在释放自身内存后,就无法找到需要赋值的内容了。

 

 

分享到:

发表评论