摘要: #include<iostream> #include<string.h> #include<stdio.h> using namespace std; class String { public: String(const char *str = NULL); //普通构造函数 String(co 阅读全文
posted @ 2023-06-04 23:49 韓さん 阅读(19) 评论(0) 推荐(0) 编辑
摘要: C/C++编译的程序所占用内存区域一般分为以下5个部分: (1) 栈区:由编译器自动分配和释放,用来存放函数形参、函数局部变量、局部变量 (2) 堆区:一般由程序员分配和释放,malloc、free、calloc、realloc (3) 静态存储区:全局变量、静态全局变量、静态局部变量 (4) 常量 阅读全文
posted @ 2023-06-04 23:02 韓さん 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 多态就是多种形态,C++的多态分为静态多态与动态多态。动态多态就是通过继承重写基类的虚函数实现的多态,在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。 多态的总结:(1) 用virtual关键字声明的函数叫做虚函数,虚函数肯定是类的成员函数 阅读全文
posted @ 2023-06-04 22:21 韓さん 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 前面我们讨论了select、poll和epoll三组I/O复用系统调用,这三组系统调用都能同时监听多个文件描述符。它们将等待由timeout参数指定的超时时间,直到一个或多个文件描述符上有事件发生时返回,返回值是就绪的文件描述符的数量。返回0表示没有事件发生。现在我们从事件集、最大支持文件描述符数、 阅读全文
posted @ 2023-06-04 20:42 韓さん 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 即使我们使用ET模式,一个socket上的某个事件还是可能被触发多次,这在并发程序中就会引起一个问题,比如一个线程在读取某个socket上的数据后开始处理这些数据,而在数据的处理过程中该socket上又有新的数据可读,此时另外一个线程被唤醒来读取这些新的数据,于是就出现两个线程同时操作一个socke 阅读全文
posted @ 2023-06-04 20:28 韓さん 阅读(243) 评论(0) 推荐(0) 编辑