C++面向对象(二)Complex类
一、Header(头文件)防卫式声明
complex.h
———————————————————————————————————————————
| #ifndef __COMPLEX__ |
| #define __COMPLEX__ |
| ——————————————————— |
| | | |
| | | |
| | ... | |
| | | |
| | | |
| | | |
| ——————————————————— |
| #endif |
———————————————————————————————————————————
上面头文件内部要写入的内容,便是用来处理下面主程序main()函数部分的。
complex-text.cpp
#include <iostream>
#include "complex.h"
using namespace std;
int main(){
complex c1(2,1);
complex c2;
cout << c1 << endl;
cout << c2 << endl;
c2 = c1 + 5;
c2 = 7 + C1;
c2 = c1 + c2;
c2 += c1;
c2 += 3;
c2 = -c1;
cout << (c1 == c2) << endl;
cout << (c1 != c2) << endl;
cout << conj(c1) << endl;
return 0;
}
二、Header(头文件)的布局
complex.h
———————————————————————————————————————————————————————————————————————————————
| #ifndef __COMPLEX__ |
| #define __COMPLEX__ |
———————————————————————————————————————————————————————————————————————————————
0 | #include <cmath> -------------------------- |
| | forward declarations | |
| class ostream; | (前置声明 ) | |
| class complex; -------------------------- |
| |
| complex& __doapl (complex* ths, const complex& r); |
———————————————————————————————————————————————————————————————————————————————
1 | class complex{
------------------------ |
| ... | class declarations | |
| }; | (类-声明 ) | |
| ------------------------ |
———————————————————————————————————————————————————————————————————————————————
2 | complex::function ... ---------------------- |
| | class definition | |
| | (类-定义 ) | |
| ---------------------- |
———————————————————————————————————————————————————————————————————————————————
| #endif |
———————————————————————————————————————————————————————————————————————————————
主要部分是头文件的类声明和类定义部分,而前置声明部分主要是为了给类声明和类定义部分提供一些前置变量声明的准备。
class declaration & definition
class complex{
(class head)
———————————————————————————————————————————————————————————————————————————————
public: (class body)
complex(double r = 0, double i = 0): re(r), im(i) {
}
complex& operator += (const complex&);
double real() const{
return re;