我是 C++ 的初学者,刚刚开始学习 OOP。在下面的程序中,我添加了相同类的对象并显示了结果。但是,我无法理解这样一个事实:如果我按值将对象传递给函数,那么更改如何反映在调用函数中。这addNumbers()
函数需要 Complex 类的两个对象和用于调用函数的对象(c3.addNumbers(c1, c2)
) 被隐式传递给函数,但是 的值是怎样的c3.real
and c3.imaginary
由于调用函数受到影响addNumbers()
无法访问它们在内存中的“位置”。任何帮助将不胜感激!
提前致谢!
class complex {
private:
int real;
int imaginary;
public:
/* Using member initializers to assign values to members */
complex()
: real(0)
, imaginary(0)
{}
void readData(int x, int y);
void printData();
void addNumbers(complex, complex);
};
void complex::readData(int x, int y)
{
real = x;
imaginary = y;
}
void complex::printData()
{
cout << real << "+" << imaginary << "i" << endl;
}
void complex::addNumbers(complex c1, complex c2)
{
real = c1.real + c2.real;
imaginary = c1.imaginary + c2.imaginary;
}
int main(void)
{
complex c1, c2, c3;
c1.readData(-5,17);
c2.readData(11,7);
c3.addNumbers(c1,c2);
c3.printData();
return 0;
}
你打电话时c3.addNumbers(c1, c2))
, addNumbers
隐式接收pointer to c3
不是副本c3
。该指针可以显式地与this
关键词。
所以你的函数可以这样重写:
void complex::addNumbers(complex c1, complex c2)
{
this->real = c1.real + c2.real;
this->imaginary = c1.imaginary + c2.imaginary;
}
这与你原来的完全等同addNumbers
功能。
换句话说:每次在成员函数中使用类成员时,都会隐式调用this->
前置于该成员之前;因此,如果member
是班级成员,那么member
总是等价于this->member
在类成员函数内部。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)