c/c++
文章平均质量分 73
选择性大失所望
!!!!!?????。。。。。
展开
-
c++模板类顺序表Vector
模板类顺序表这次在顺序表之后,又再次学习了模板,于是便想着将模板类的顺序表实现出来,因为前段时间时间电脑出了些问题,很是悲伤,所以前面的就不补了,反正只要能看懂模板类的,再懂模板中的推理和实例化,这样应该都不是问题。下面就上代码:#pragma once#include #include #include using namespace std;template cl原创 2017-02-20 15:45:40 · 880 阅读 · 0 评论 -
C++中的隐藏、重载、覆盖(重写)
1 重载与覆盖成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual关键字可有可无。 覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual关键字。令人迷惑的隐藏规则 本来仅仅区别重载与覆盖并不算困难,但是C++的隐藏规则使问题复杂性陡然增加。原创 2017-07-28 11:48:17 · 290 阅读 · 0 评论 -
C++ 中头文件重复定义的问题
一、同一头文件中类嵌套的疑问假设我们有两个类A和B,分别定义在各自的头文件A.h和B.h中,但是在A中要用到B,B中也要用到A,像下面的写法是错误的: class B;class A { public: B b; };class B { public: A a; }; 因为在A对象中要开辟一块属于B的空间,而B中又有转载 2017-08-17 17:00:02 · 1361 阅读 · 0 评论 -
C语言模拟实现C++的继承与多态
一、面向过程编程与面向对象编程的区别 众所周知,C语言是一种典型的面向过程编程语言,而C++确实在它的基础上改进的一款面向对象编程语言,那么,面向过程与面向对象到底有什么样的区别呢?【从设计方法角度看】 面向过程程序设计方法采用函数(或过程)来描述对数据的操作,但又将函数与其操作的数据分离开来。 面向对象程序设计方法是将数据和对象的操作封装在一起,作为一个整体来处理。【从维护角度看】转载 2017-08-03 11:16:18 · 327 阅读 · 0 评论 -
静态成员和静态成员函数
一、静态成员的特点:(1)static数据成员在类的内部声明,但只能在类的外部定义,在类的外部不能指定static,在类的定义时候进行初始化; (2)static数据成员只能在类的外部进行初始化(特例:当整型const static数据成员被常量表达式初始化时,就可以在类的内部进行初始化,但还需要在外部进行定义)。 (3) static数据成员可以是该成员所属的类类型,而非static数据成员只原创 2017-07-24 15:52:50 · 1976 阅读 · 0 评论 -
tcp粘包分析
这两天看csdn有一些关于socket粘包,socket缓冲区设置的问题,发现自己不是很清楚,所以查资料了解记录一下: 一 .两个简单概念长连接与短连接: 1.长连接Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收。2.短连接Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点 通讯,比如转载 2017-08-07 17:59:22 · 367 阅读 · 0 评论 -
堆和栈的区别(转过无数次的文章)
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似转载 2017-07-30 16:22:26 · 239 阅读 · 0 评论 -
路由选择协议
先说一下理想的路由算法:算法必须是正确的和完整的 “正确”的含义是:沿着各路由表所指引的路由,分组一定能够最终到达目的网络和主机;算法在计算上应简单 路由选择的计算不应该使网络通信量增加太多的额外开销;算法应能适应通信量和网络拓扑的变化 这就是说要有自适应性。当网络中的通信量发生变化时,算法能自适应改变路由以均衡各链路的负载;当某个或某些结点、链路发生故障不能工作,或者修理好了再原创 2017-06-25 22:48:49 · 914 阅读 · 0 评论 -
TCP--server升级版
前面已经编写完基本的TCP服务器和客户端了;现在要对服务器做一个改进版本的,前面的服务器,其实只支持一个访问,因为当我们监听到一个程序的时候,本进程只能服务其一个socket; 现在来写一个支持多用户访问的,其中有好几个方法,可以来支持多用户访问;可以使用多进程,每当监听到一个请求时,就创建一个进程来让子进程去为他服务;这样就可以再去监听下一个请求了; 53 int id =原创 2017-06-23 18:45:45 · 357 阅读 · 0 评论 -
文件指针和文件描述符的区别
文件指针:在C语言中用一个指针变量指向一个文件,这个指针称为文件指针。通过文件指针就可对它所指的文件进行各种操作。 FILE *指针变量标识符; 其中FILE应为大写,它实际上是由系统定义的一个结构,该结构中含有文件名、文件状态和文件当前位置等信息。在编写源程序时不必关心FILE结构的细节。 在使用文件时,需要在内存中为其分配空间,用来存放文件的基本信息,给结构体类型是由系统定义的,C语言规定原创 2017-05-10 16:00:21 · 566 阅读 · 0 评论 -
c语言函数读取整数的每一位的函数
这两天所写的代码中反复出现一个问题,就是需要求一个整数的每一位,每次都现编写感觉太麻烦,于是决定把其写成一个函数,调用这个函数就会把你所给的整数的每一位放到一个数组里面,以便利用void pop(int a[] , int num){ int i = 0; while (1) { a[i] = num % 10; num = num / 10; i++; if (num =原创 2016-09-25 15:02:09 · 7046 阅读 · 3 评论 -
c语言 三子棋/井字棋 算法源代码并讲解
用了这好几天的时间在闲暇时间写了一个小时候玩的井字棋,或者叫三子棋的小游戏,来娱乐娱乐,虽然是黑白框,并且电脑有点傻之外,一切良好。 首先写之前就要先明白思路,这个棋盘要放到一个二维数组里面这样才能更好的显示出来,并且方便操作,先打印出来棋盘这是必须的,这就是基本的二维数组的打印就好,把棋盘初始化为空格就好了,然后等到走的时候,拿相应的字符来代替就好了;电脑走的话就用随机数来差原创 2016-10-12 01:10:26 · 28776 阅读 · 2 评论 -
c 语言 中 宏和函数的区别
在c语言中 宏和函数虽然 有时候有些东西是可以做相同的工作的,但这两个还是有着本质的区别的,两个的做法可谓是千差万别的,下面我就详细讲一下他俩的不同点: 在C及C++语言中允许用一个标识符来表示一个字符串,称为宏,该字符串可以是常数、表达式、格式串等。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完原创 2016-10-19 13:24:29 · 617 阅读 · 0 评论 -
c语言中编译链接的整个过程
C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。 编译 编译是读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代原创 2016-10-19 13:33:34 · 2990 阅读 · 0 评论 -
c++ 虚继承
在c++里面有很大一个重点就是继承和多态了,今天就先说一下关于继承的一个小方面。因为在c++当中的话继承有 1.单继承:一个子类只有一个直接父类时称为这个继承关系为单继承 2.多继承:一个子类有两个或以上的父类时称这个继承关系为多继承例如:单继承class AA{public: int _aa;};class BB :public AA{public: int _bb;原创 2017-02-15 23:27:06 · 404 阅读 · 0 评论 -
游戏架构设计的一些整理
一个大型的网落游戏服务器应该包含几个模块:网络通讯,业务逻辑,数据存储,守护监控(不是必须),其中业务逻辑可能根据具体需要,又划分为好几个子模块。这里说的模块可以指一个进程,或者一个线程方式存在,本质上就是一些类的封装。对于服务器的并发性,要么采用单进程多线程,要么采用多进程单线程的方式,说说两种方式的优缺点:一、单进程多线程的服务器设计模式只有一个进程,但一个进程包好多个线程:网络通讯层,业务逻辑转载 2017-08-27 22:40:24 · 20487 阅读 · 0 评论