banner
NEWS LETTER

侯捷C++面向对象编程上day1

Scroll down

侯捷C++面向对象编程(上)课程打卡 Day1

1、头文件与类的声明

1.1 C vs C++

img

C语言中,Data和函数是分别定义,根据类型创建的。这样建立的变量为全局变量。

C++中,将Data和函数包含在一起形成类。使用类实例化出一个对象,即为面向对象。类中的数据和函数都是局部的,不是全局的。

class分类:

  • 无指针成员的类
  • 有指针成员的类
1.2 头文件与类
1.2.1头文件

引用自己编写的头文件使用双引号。

写法如下:

img

1处是要写类的声明,2是要写类的具体定义,写1、2的时候发现有些东西需要提前进行声明,就写在0处。

complex.h:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef _complex_  //防卫式声明,如果没有定义过,那就定义一下。ifndef+define。
#define _complex_//如果程序第一次引用,则进行定义,后续不需要重复定义,不需要重复进入下面的过程
#include <cmath>
class ostream;
class complex;

complex&
_doapl(complex* this ,const complex& r);

class complex
{
。。。
};

complex::function...

#endif
1.2.2 class的声明

在C++中,struct和class的唯一区别在于默认访问权限不同

  • struct默认权限为公共
  • class默认权限为私有
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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,im;

friend complex& _doapl (complex*, const complex&);
}
1.2.3 模板初识

img

1
2
3
4
5
{
complex<double> c1(2.5, 1.5);
complex<int> c2(2, 6);
...
}
  • 因为实部和虚部的类型不确定,可能是 double float int,定义一个模板类型叫做 T
  • T作为一个类型参数来传入,在调用的时候就可以指定类型了
  • 通过在定义类的前面加入一行代码 template<typename T> 来实现
Other Articles
cover
english
  • 24/06/27
  • 11:29