在MyClass类的定义中,对赋值运算符二进行重载。请将画线处缺失的部分补充完整。【 】MyClass::operator=(const MyClass& rhs) { if(this==&rhs)return *this;

admin2009-03-16  25

问题 在MyClass类的定义中,对赋值运算符二进行重载。请将画线处缺失的部分补充完整。【  】MyClass::operator=(const MyClass& rhs)
   {
      if(this==&rhs)return *this;
      value=rhs.value;
      return *this;
   }

选项

答案MyClass&

解析 本题考查“=”运算符的重载。赋值运算符=的重载应注意以下几点:
   ①返回值应声明为引用,而函数体中总是用语句return *this;返回;
   ②如果参数被声明为指向同类对象的引用或指针,应判别所指向的对象是否与被赋值对象为同一对象,如果是,立即返回,不做任何赋值处理:
   ③如果被赋值对象占用了动态空间或其他资源,应首先释放这些资源,以便接收新的资源;
   ④如果参数被声明为指针或引用,通常应加上const修饰;
    ⑤如果参数被声明为指针,应判别是否为空,以便做出特殊处理:
   ⑥一个类如果需要重载运算符=,通常也就需要定义自身特有的拷贝构造函数,反之亦然。
   由此可见,本题应填入MyClass&。
转载请注明原文地址:https://kaotiyun.com/show/zojp777K
0

最新回复(0)