C++ 学习笔记
source: 高清 1080P C++面向对象高级编程(侯捷) P6 6 复习Complex类的实现过程 - YouTube
//complex.hpp
#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 image () const {return im;}
private:
double re,im;
friend complex& __doapl(complex*, const complex&);
};
#endif
tips:
1. the below format can avoid invoking hpp repeatly
#ifndef __COMPLEX__
#define __COMPLEX__
...
#endif
2.privat type: most variable should be define in private part
3.construct:
complex (double r=0, double i=0)
: re(r) ,im(i)
{}
parament r and i are call vaule, it should have init value
:re(r),im(r) it used to init construct, it equals to:
complex (double r=0, double i=0)
{
re =r;
im=i;
}
if there is no pointers in the class definition,there will be no destruction.
4.public type :
it includes 3 member functions:
complex& operator += (const complex&)
it is a operator reloding for "operator += ", return complex&(call reference)
type, its parament is a constant and reference invoking
double real () const {return re;}
double image () const {return im;}
if there is no change for variable re and im in the function,
should be set to const in the function definition.
call value and call reference:
it is applied in the return type of a function.
a.local variable can be only called value, because after the function end,
it is not useful ,on this scenario, function call return a value
b.if a return variable's value can be keep after the end of lifespan of a
function, the return type can be reference, such as pointer all class.
class is used for reference:
the class's constructor + &: complex&
5.friend type:
friend type function can invoke any variable in the class, including
private variables.