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

题目

在TestClass类的定义中,对赋值运算符=进行重载。请将画线处缺失的部分补充完整。______TestClass::operator=(const TestClass& rhs)

{

if(this==&rhs)return *this;

value=rhs.value;

return *this;

}


相似考题
参考答案和解析
正确答案:TestClass&
TestClass& 解析:如果要重载一个类的运算符=,通常需要定义自己特有的拷贝构造函数。在类体中可以增加:(const & operator lestClass & rhs);然后在TestClass的类体外给出它的完整定义:
TestClass& TestClass::operator=(const TestClass& rhs)
{…}
所以在TestClass类的定义中缺少了TestClass&语句。
更多“在TestClass类的定义中,对赋值运算符=进行重载。请将画线处缺失的部分补充完整。______TestClass:: ”相关问题
  • 第1题:

    已知下列程序的输出结果是42, 请将画线处缺失的部分补充完整。 include using namespac

    已知下列程序的输出结果是42, 请将画线处缺失的部分补充完整。

    include<iostream>

    using namespace std;

    class Foo

    int value;

    public:

    Foo( ): value(0) {}

    void setValue(int value)

    {【 】=value; //给Foo的数据成员value赋值}

    void print( ) { cout<<value;}

    };

    int main( )

    {

    Foo f;

    f.setValue(42);

    f.print();

    return 0;


    正确答案:this->value或Foo::value
    this->value或Foo::value 解析:从注释中可以看出,下划线处应该填入Foo类的数据成员value。但是,由于函数的形参名也叫value,所以在函数中直接使用value引用的是形参变量而不是 Foo类的数据成员。此时,只有两个办法可以引用到Foo类的数据成员:一是通过this指针,在类的成员函数中this代表函数所属对象的指针,故可以填this->value。二是通过作用域运算符“::”明确指出访问的是Foo类的成员,故还可以填Foo::value。

  • 第2题:

    己知下列程序的输出结果是42,请将横线处缺失的部分补充完整。 include using namespace

    己知下列程序的输出结果是42,请将横线处缺失的部分补充完整。

    include<iostream>

    using namespace std;

    class TestClass{

    int value;

    public:

    TestClass():value(0){};

    void setValue(int value)

    {______=value;}//给TestClass的数据成员value赋值

    void print(){cout<<value;};

    };

    int main()

    {

    TestClass f;

    f.setValue(42);

    f.print();

    return 0;

    }


    正确答案:this->value或TeslClass::value
    this->value或TeslClass::value 解析:为了指明是给本类中的value变量赋值,所以利用每一个成员函数中的指针this指向该变量,或者说明是该类域中的value, TestClass::value。

  • 第3题:

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

    {

    if(this==&rhs)return *this;

    value=rhs.value;

    return *this;

    }


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

  • 第4题:

    已知下列程序的输出结果是42,请将横线处缺失的部分补充完整。 include using namespace

    已知下列程序的输出结果是42,请将横线处缺失的部分补充完整。

    include<iostream>

    using namespace std;

    class TestClass{

    int value;

    public:

    TestClass():value(0){};

    void setValue(int value)

    {______=value;}//给TestClass的数据成员value赋值

    void print(){cout<<value;};

    };

    int main()

    {

    TestClass f;

    f.setValue(42);

    f.print();

    return 0;

    }


    正确答案:this->value或TestClass::value
    this->value或TestClass::value 解析:为了指明是给本类中的value变量赋值,所以利用每一个成员函数中的指针this指向该变量,或者说明是该类域中的value,TestClass::value。

  • 第5题:

    在MyClass类的定义中,对赋值运算符=进行重载。请将横线处缺失的部分补充完整。

    ______MyClass::operator=(const MyClass&rhs)

    {

    if(this==&rhs)return*this;

    value=rhs.value;

    return*this;

    }


    正确答案:MyClass&。
    MyClass&。 解析: 本题考查“=”运算符的重载。运算符“=”的重载需要注意:返回值应声明为引用,函数体中总是用语句return*this;返回;如果参数被声明为指向同类对象的引用妨指针,应判别所指向的对象是否与被赋值对象为同一对象,如果是则不做任何处理;如果被赋值对象占用了动态空间,应选释放这些资源,以便接收新的资源,如果参数被声明为指针成引用,通常应加上const修饰;一个类如果需要重载运算符=,通常也就需要定义自身特有的复制构造函数,反之亦然。