大家好,我是小跳,我来为大家解答以上问题。重载函数的要求,重载函数很多人还不知道,现在让我们一起来看看吧!
第一个问题看的不是很明白,不好意思,如果没说到点子上,你再解释下问题。c.real=real+c2.real;c.imag=imag+c2.imag;
这两句话和你第二个问题的this有点关,类产生的对象都会有那么一个指向对象本身的一个指针this,例如说complex Ts; 在Ts对象创建的时候,会产生一个complex *this = &Ts; 值的一提的是,这个指针并不占对象的内存,之所以说是隐式是因为这个指针并不是用户定义的,又不占对象内存,但它本身却属于对象的一部分,能够访问对象的数据和函数成员。一般我们在类内使用函数成员或数据成员,都会隐式的用上this指针。
如上面的c.real=real+c2.real;c.imag=imag+c2.imag;其实就是:c.real=this->real+c2.real;c.imag=this->imag+c2.imag;因为这个this不用我们手动加上去,编译器自己会做。所以叫隐式。
但有的时候是要显式加上去的。假设存在一个类中有一个数据成员为 int num;一个成员函数为
int add(int num)
{
return num + num;
}
像上面那样的那个num编译器就不知道到底是传过来的那个num还是本身的数据成员,当然这个是因为编程者自己重复了变量名,换了形参那个变量名就可以解决了,不过也可以显式地调用类中的this指针来解决:
int add(int num)
{
return this->num + num;
}
这样编译器就知道,哦,第一个num是表示类中的成员数据,第二个num是传过来的参数。
本文到此讲解完毕了,希望对大家有帮助。