Object Based (基于对象) vs. Object Oriented (面向对象)
- Object Based:单一class的设计
- Object Oriented:多重class的设计,class与class之间的关系
C++代码的基本形式
C vs. C++
- 关于数据和函数
- C的函数用来处理数据
- 根据数据类型可以创建变量
- 任何函数都可以处理你的数据
- C的数据类型有内置类型和结构体struct类型
- C++的函数和数据封装在一起
- 根据类可以创建对象
- 只有该类的成员函数可以处理该类的对象(广义来说)
- C++扩展了struct(可以有函数),有了class
- Output
- #include <cstdio>
- #include <iostream>
Header(头文件)中的防卫式声明、布局
// complex.h
// guard 防卫式声明
#ifndef __COMPLEX__
#define __COMPLEX__
// 0、forward declarations (前置声明)
#include <cmath>
class ostream;
class complex;
complex&
__doapl (complex* ths, const complex& r);
// 1、class declarations (类-声明)
class complex
{
...
};
// 2、class definition (类-定义)
complex::function ...
#endif
// complex-test.cpp
#include <iostream>
#incldue "complex.h" // *****HERE*****
using namespace std;
int main() {
...
}
class - 声明
class complex // class head
{ // class body
public:
complex (double r = 0, double i = 0)
: re (r), im (i)
{ }
// 有些函数在此直接定义,另一些在body之外定义
complex& operator += (const complex&) ;
double real () const { return re; }
double imag () const { return im; }
private:
double re, im;
friend complex& __doapl (complex*, const complex&);
};
// .cpp
{
complex c1(2,1);
complex c2;
}
class template (模板) 简介
template<typename T>
class complex // class head
{ // class body
public:
complex (T r = 0, Ti = 0)
: re (r), im (i)
{ }
// 有些函数在此直接定义,另一些在body之外定义
complex& operator += (const complex&) ;
T real () const { return re; }
T imag () const { return im; }
private:
T re, im;
friend complex& __doapl (complex*, const complex&);
};
// .cpp
{
complex<double> c1(2.5,1.5);
complex<int> c2(2,6);
}