#ifndef __COMPLEX__
#define __COMPLEX__
class Complex {
public:
//传值
complex (double r = 0, double i = 0)
: re(r), im(i)
{ }
complex& operator += (const complex&);
double real() const {return re; }
double imag() const {return im; }
private:
double re, rm;
//这是我的一个兄弟
friend complex& __doapl (complex*, const complex&);
};
inline complex&
__doapl(complex* ths, const complex& r) {
ths->re += r.re;
ths->im += t.im;
//返回的是一个指针
return *ths;
}
// +=函数
inline complex& //左边也会传进来, 右边不动
complex::operator += (const complex& r) {
return __doapl(this, r);
}
inline double img(const complex& x) {
return x.img();
}
inline double real(const complex& x) {
return x.real();
}
//不可以返回引用
inline complex operator + (const complex& x, const complex& y) {
//创建一个临时变量
return complex(real(x) + real(y), imag(x) + imag(y));
}
#endif
我们可以由上面的设计方式, 总结出以下的设计方式:
在设计每一个类的时候, 我们都应该添加上防卫式的声明, 这样会是我们不会重复的引入相同的头文件
#ifndef
#define
#endif
其次构造函数的写法, 应该写成下面这种形式:
类的名称 (参数1, 参数2)
: 属性1(参数1), 属性2(参数2)
{}
内联函数: 在类中创建的函数叫做内部函数, 而如果我们在外部创建函数的时候, 我们也可以将这个函数声明为属于这个类我们可以使用inline
关键字。
inline complex& //左边也会传进来, 右边不动
complex::operator += (const complex& r) {
return __doapl(this, r);
}
私有属性, 在函数的外部是不可以进行访问的, 但是我们可以声明一个友元函数, 这样就可以直接进行访问了
friend complex& __doapl (complex*, const complex&);
最后一个是:传值还是传递引用
尽量传递引用(因为很快), 但是注意当在函数中引入中间变量的时候, 我们不可以传递引用, 因为引用在函数结束后就消失了
//不可以返回引用
inline complex operator + (const complex& x, const complex& y) {
//创建一个临时变量
return complex(real(x) + real(y), imag(x) + imag(y));
}
标签:__,real,中学,const,C++,complex,inline,return
From: https://www.cnblogs.com/zhengel/p/16756101.html