对象引用函数的问题
#include<iostream>class Complex //complex表示“复数”
{
public:
Complex();
Complex(double r,double i);
Complex complex_add(Complex &d);
void print();
private:
double real;
double imag;
};
Complex::Complex()
{
real = 0;
imag = 0;
}
Complex::Complex(double r,double i)
{
real = r;
imag = i;
}
Complex Complex::complex_add(Complex &d)
{
Complex c;
c.real = real + d.real;
c.imag = imag + d.imag;
return c;
}
void Complex::print()
{
std::cout<<”(”<<real<<”,”<<imag<<”i)\n”;
}
int main()
{
Complex c1(3,4),c2(5,-10),c3;
c3 = c1.complex_add(c2);
std::cout<<”c1=”;
c1.print();
std::cout<<”c2=”;
c1.print();
std::cout<<”c1+c2=”;
c3.print();
return 0;
}
对于这个代码,我的疑问有如下几点
Complex Complex::complex_add(Complex &d)
{
Complex c;
c.real = real + d.real;
c.imag = imag + d.imag;
return c;
}
①在c.real = real +d.real中,加数real是哪个?以main函数中的c3 = c1.complex_add(c2)为例,加数real是哪个
②real是Complex类的私有成员,Complex&d是一个地址,不是Complex类的函数,为什么可以访问私有成员real 1 就是对应对象的实部, c1.complex(c2)就是讲c1,c2的实部相加,虚部相加
2 因为这是类内部函数,可以直接访问成员变量 ①在c.real = real +d.real中,加数real是哪个?以main函数中的c3 = c1.complex_add(c2)为例,加数real是哪个
real是c1的
②real是Complex类的私有成员,Complex&d是一个地址,不是Complex类的函数,为什么可以访问私有成员real
Complex&d 你看清楚它&的位置,它是一个别名而已,传递的是一个 Complex类 的变量 4goodworld 发表于 2020-4-1 12:40
①在c.real = real +d.real中,加数real是哪个?以main函数中的c3 = c1.complex_add(c2)为例,加数real是哪 ...
Complex Complex::complex_add(Complex &d)
这个代码的参数为什么要传一个地址进去呢?不理解这一点,您能给解释一下吗 巨兔12138 发表于 2020-4-1 16:46
Complex Complex::complex_add(Complex &d)
这个代码的参数为什么要传一个地址进去呢?不理解这一点,您 ...
传引用,为了避免再构造一个对象,减少执行开销
巨兔12138 发表于 2020-4-1 16:46
Complex Complex::complex_add(Complex &d)
这个代码的参数为什么要传一个地址进去呢?不理解这一点,您 ...
我可没说传地址呀,你百度下 引用
页:
[1]