请为该CMyString类型添加赋值运算符函数

wKiom1cWJLbj58pzAACprjaWXpw691.jpg

第二种方法:

wKioL1crOW2y8X8fAABTWzD3Itc861.jpg

wKiom1crOJfT5o7MAAA9nAmVaZY022.jpg

其中运行结果为s1=s2:

wKiom1cWJRqA7qoqAAArO9_ceEs360.jpg

s2=s1=s3为:

wKiom1crOPHgd4SYAAAchQbeI_A210.jpg

运行结果分析:

虽然两种都可以实现赋值运算符函数,但是第一种,如果内存不足导致m_pData是一个空指针,在delete时将会导致程序崩溃,第二种便是一种高效且安全的方法。

总结:(1).在写程序时应注意new与delete.new[]与delete []搭配使用

      (2).在返回时应引用返回,才可以连续赋值。

      (3).传入的参数写为常量引用,不仅可以提高效率,减少一次调用复制构造,并且在赋值时不会改变传入的实例状态。

      (4).在第一种方法中,一旦在赋值运算符函数内部抛出一个异常(如果内存不足导致m_pData是一个空指针),CMyString的实例不再保持有效的状态,就会违背异常安全性原则。而在第二种方法则不会。