一起写服务器(C++/线程池/多反应堆(类介绍上))

用C++重构服务器,用了C++的知识点和一些C++ 11标准

1.Channel类

1.1枚举类

//定义文件描述符的读写事件

//知识点,强枚举

枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。

“传统”的C++枚举类型有一些缺点:它会在一个代码区间中抛出枚举类型成员

(如果在相同的代码域中的两个枚举类型具有相同名字的枚举成员,

这会导致命名冲突),它们会被隐式转换为整型,并且不可以指定枚举的底层数据类型

C++11中,强类型枚举解决了这些问题

举例:

int main()

{

enum Status

{

Ok,

Error

};

//enum Status2{Ok, Error};//err, 导致命名冲突, Status已经有成员叫Ok, Error

return 0;

}

enum class FDEvent
{
	TimeOut = 0x01,
	ReadEvent = 0x02,
	WriteEvent = 0x04
};

枚举类的使用

        m_events |= (int)FDEvent::WriteEvent;
		m_events |= static_cast<int>(FDEvent::WriteEvent);
		/*
			知识点:1.枚举作用域
				   2.上面是C语言风格的强制类型转换,下面是C++风格的强制类型转换,强制转换成int类型
		*/

2.ChannelMap类

C++的STL里面提供了MAP容器,而且其会动态扩容,所以我们不再需要这个类了,直接清除

3.Dispatcher类(父)

首先我们可以了解一下C++的三大特性

封装性:

把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

类将成员变量和成员函数封装在类的内部,根据需要设置访问权限,通过成员函数管理内部状态

3.1protected

其中子类需要从父类继承过来数据,所以需要变成protected,而public这个类可以随便访问,但是同样我们需要访问参数怎么办?就用函数返回一个参数,让调用的类访问。

3.2默认参数

int timeout = 2//就是默认参数

3.3虚析构

实现多态时,父指针指向子指针,所以要变成虚析构,因为本来继承后要重写

实例化的是子类对象,所以需要子对象重写析构函数,以便在销毁时释放资源

3.4 虚函数和纯虚函数

虚函数:C++的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类提供默认的函数实现。但是此时子类也可以重写父类的虚函数实现子类的特殊化。(可以重写,也可以不用重写,已经为子类提供了默认的函数实现)

纯虚函数:C++中包含纯虚函数的类,被称为是“抽象类”。抽象类不能使用new出对象,子函数必须要对它进行重写

(子类必须重写父类的函数)

虚函数和纯虚函数的举例:

虚函数:virtual int add(); //而且得实现这个功能

纯虚函数:virtual int add() = 0;

3.5

冒号后面跟的是赋值,这种写法是C++的特性。

A( int aa, int bb ):a(aa),b(bb)

{

}

相当于

A( int aa, int bb )

{

a=aa;

b=bb;

}

继承:

继承所表达的是类之间相关的关系,这种关系使得对象可以继承另外一类对象的特征和能力。 继承的作用:避免公用代码的重复开发,减少代码和数据冗余。

//一般公共继承就行,继承了父类的东西,但是父类的private里面的东西继承不了,所以把父类的数据改成protected

4.EpollDispatcher/SelectDispatcher/PollDispatcher类(子)

多态:

多态性可以简单地概括为“一个接口,多种方法”,字面意思为多种形态。程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。比如函数重载、运算符重载、虚函数等

Dispatcher类的dispatch:

EpollDispatcher类的dispatch:

SelectDispatcher类的dispatch:

4.1 new 和 delete

4.2new [] 和 delete []

4.3const_cast

全部评论
Dd 跟着校友一起做项目
1
送花
回复 分享
发布于 2023-02-24 23:51 湖北
dd,跟着大佬做项目
点赞
送花
回复 分享
发布于 2023-02-25 16:31 广东
秋招专场
校招火热招聘中
官网直投

相关推荐

10 45 评论
分享
牛客网
牛客企业服务