首页 > 解决方案 > c++中的this指针

问题描述

什么是return *this下面的等价物?

#include<cstdlib>
#include<string>
#include"UniversityStaff.h"
using namespace std;
UniversityStaff::UniversityStaff()
{
    name="";
}
UniversityStaff::UniversityStaff(string theName)
{
    name=theName;
}
UniversityStaff::UniversityStaff(const UniversityStaff& theObject)
{
    name=theObject.name;
}
string UniversityStaff::getName()const
{
    return name;
}

UniversityStaff& UniversityStaff::operator=(const UniversityStaff& rtSide)
{
    name=rtSide.name;
    return *this;
}

istream& operator >>(istream& inStream,UniversityStaff& staffObject)
{
     inStream>>staffObject.name;
    return inStream;    
}
ostream& operator <<(ostream& outStream,const UniversityStaff& staffObject)
 {
    outStream<<staffObject.name;
    return outStream;
 }

这个指针不是指向我的对象吗?为什么我不能使用“this->name”来代替?提前致谢!

标签: c++compiler-errors

解决方案


这个指针不是指向我的对象吗?

这是。

为什么我不能使用“this->name”来代替?

因为显然你试图为你自己的类重载赋值运算符。然后它需要返回该类的一个对象,而不是其他东西。为什么你决定超载它,你告诉我。

请研究这个:https ://en.cppreference.com/w/cpp/language/rule_of_three 。如果为您的类重载赋值运算符甚至有意义,那么您也需要一个析构函数和复制构造函数。


推荐阅读