【发布时间】:2021-07-09 13:53:36
【问题描述】:
假设有两个对象:num1、num2,每一个都存放整数5。
我想使用非成员函数添加两个对象的值,所以结果是:10。
但输出显示值:5。
类成员函数或*this指针有错误吗?
main.cpp
#include<iostream>
#include"Person.h"
using namespace std ;
int main(){
Person num1 ;
Person num2 ;
num1.InValueCapture(5) ;
num2.InValueCapture(5) ;
add(num1,num2); //non class member function : num1+num2 expecting result : 10
cout << "THE OUTPUT : " << num1.GetValueCapture() << endl; //but now we get 5
return 0 ;
}
人.h
#ifndef PERSON.H
#define PERSON.H
struct Person{
private:
int value_capture ;
public:
int InValueCapture(int value){
value_capture = value ;
}
int GetValueCapture() const {
return value_capture ;
}
//adding two data
Person& combine(const Person &Rdata)
{
value_capture += Rdata.value_capture ;
std::cout << "value capture : " << value_capture <<std::endl; // use to check value inside DataSum.value_capture
return *this ;
}
};
Person add(const Person &Ldata , const Person &Rdata) //nonmember function
{
Person DataSum = Ldata;
DataSum.combine(Rdata); // add Rdata to Ldata , call class function combine
return DataSum ; //
}
#endif
感谢您的指导,感谢您的帮助。
【问题讨论】:
-
您的 add 函数正在修改并返回您在其中创建的
DataSum对象。如果要查看应用于传递给函数的对象的更改,则需要修改LData或RData。 -
同样的情况:
int add(const int& a, const int& b) { int sum = a; sum += b; return sum; }。你看到问题了吗?
标签: c++ return this-pointer