c++ - 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”来代替?提前致谢!
解决方案
这个指针不是指向我的对象吗?
这是。
为什么我不能使用“this->name”来代替?
因为显然你试图为你自己的类重载赋值运算符。然后它需要返回该类的一个对象,而不是其他东西。为什么你决定超载它,你告诉我。
请研究这个:https ://en.cppreference.com/w/cpp/language/rule_of_three 。如果为您的类重载赋值运算符甚至有意义,那么您也需要一个析构函数和复制构造函数。
推荐阅读
- pandas - 如何在熊猫 MultiIndex 数据框中有条件地重置滚动最大值的初始值/行?
- python - python空闲3.6.2,python版本3.6.4 @macOS
- sql - 如何使用 Postgres 创建队列查询
- ios - Angular 6(点击)在iOS浏览器中快速点击时不会触发
- java - 如何使用 Glide 将 Firebase 生成的 url 放入 ImageView?
- puppeteer - 使用 Puppeteer 保存屏幕截图时如何在我的计算机中创建一个文件夹
- ios - iOS,Swift:如何在相同的评级控制代码上添加/扩展点击操作
- php - DB:多列之间的匹配和评分(3D 数据集)
- javascript - 如何使表单条目相互镜像?
- marklogic - Marklogic 任务服务器中队列大小增加的影响