代码的函数部分看不懂
#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)部分的函数是什么意思啊
不要说是是现实“是不遇事不相加虚部与虚部相加”
我知道是这个作用,我是不知道为什么会实现这个功能
谢谢啦!!! 我是不知道你想知道什么
还有,你问题中的错别字太多,也许是这个问题导致的?
人造人 发表于 2020-3-31 19:06
我是不知道你想知道什么
还有,你问题中的错别字太多,也许是这个问题导致的?
就是我知道函数体的作用是,实部与实部相加,虚部与虚部相加
但是我不知道是如何实现这个功能的
就是能给解释下main函数的实现过程吗 巨兔12138 发表于 2020-3-31 19:24
就是我知道函数体的作用是,实部与实部相加,虚部与虚部相加
但是我不知道是如何实现这个功能的
就是能 ...
还是看不懂你的问题
对于这个问题 “但是我不知道是如何实现这个功能的”
不就是这样实现的吗? 实部与实部相加,虚部与虚部相加
你想知道什么? 人造人 发表于 2020-3-31 19:47
还是看不懂你的问题
对于这个问题 “但是我不知道是如何实现这个功能的”
#include<iostream>
class ClxBase
{
public:
ClxBase()
{
};
virtual ~ClxBase()
{
};
virtual void doSomething()
{
std::cout<<”Do something in class ClxBase\n”
}
};
class ClxDerived:public ClxBase
{
public:
ClxDerived()
{
};
~ClxDerived()
{
std::cout<<”Output from the destructor of class ClxDerived\n”;
};
void doSomething()
{
std::cout<< ”Do something in class ClxDerived\n”;
};
};
int main()
{
ClxBase*pTest = new ClxDerived;
}
就比如我想知道这个代码main函数的实现过程
我就会这样解释
main函数中,在基类ClxBase中定义了一个指针pTest指向子类ClxDerived,所以运行代码时,先执行子类ClxDerived的doSomething方法输出Do something in class ClxDerived,然后析构器清理内存,执行析构器代码输出Output from the destructor of class ClxDerived
这就是实现过程啊...我的问题真的那么难理解吗...
我知道x是什么,但是我想知道x是什么
你的这个问题给我的就是这种感觉
巨兔12138 发表于 2020-3-31 19:50
就比如我想知道这个代码main函数的实现过程
我就会这样解释
这样不就好了,是你之前提的问题不好
我知道你想知道什么了,大概
我想想看该怎么回答这个问题
人造人 发表于 2020-3-31 19:56
这样不就好了,是你之前提的问题不好
我知道你想知道什么了,大概
我想想看该怎么回答这个问题
好,谢谢 我不知道这是不是你想要的
#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()
{
std::cout << "Complex::Complex()" << std::endl;
real = 0;
imag = 0;
}
Complex::Complex(double r,double i)
{
std::cout << "Complex::Complex(double r,double i)" << std::endl;
std::cout << "r=" << r << ",i=" << i << std::endl;
real = r;
imag = i;
}
Complex Complex::complex_add(Complex &d)
{
std::cout << "Complex Complex::complex_add(Complex &d)" << std::endl;
Complex c;
c.real = real + d.real;
c.imag = imag + d.imag;
return c;
}
void Complex::print()
{
//std::cout<<”(”<<real<<”,”<<imag<<”i)\n”; // 这个双引号比较奇怪
std::cout << "(" << real << "," << imag << "i)\n";
}
int main()
{
Complex c1(3,4),c2(5,-10),c3;
c3 = c1.complex_add(c2);
return 0;
}
$ ./main
Complex::Complex(double r,double i)
r=3,i=4
Complex::Complex(double r,double i)
r=5,i=-10
Complex::Complex()
Complex Complex::complex_add(Complex &d)
Complex::Complex()
这个是43行创建c1对象的时候输出的
Complex::Complex(double r,double i)
r=3,i=4
这个是创建c2对象
Complex::Complex(double r,double i)
r=5,i=-10
接下来的这个是创建c3对象,使用的是默认构造函数
Complex::Complex()
输出这个,说明执行完了30行
Complex Complex::complex_add(Complex &d)
最后这个是第31行创建对象c的时候输出的
Complex::Complex() Complex Complex::complex_add(Complex &d)
这个 Complex &d是引用 ,相当于传递一个 complex类型的 参数(或者叫做值)
对于 c3 = c1.complex_add(c2);而言
它巧妙地解决了c1+c2的问题
你定义了
Complex c1(3,4),c2(5,-10),c3;
那么对于c1而言,
real = 3;
imag =4;
明确了
然后你又
c1.complex_add(c2);
不就是要对下面的内容进行操作
Complex c;//这个局部变量,不去管
c.real = real + d.real; //real =3,d.real等于c2.real,c2.real不就等于5 ,结果为8
c.imag = imag + d.imag;//同理 4-10=-6
return c;
最后的结果,应该是 8,-6
页:
[1]