![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 93
KronosCzj
这个作者很懒,什么都没留下…
展开
-
sylar服务器框架分析——日志系统
sylar服务器框架中对于日志系统的重点难点分析原创 2022-11-10 09:39:32 · 1315 阅读 · 1 评论 -
《深度探索c++对象模型》第四章:(成员)函数
假设现有一个3d点坐标,将其归一化:Point3d Point3d::normalize() const{ //register表示该变量常用,请求编译器将变量存储在寄存器里,加快存取速度,但是编译器不一定会放寄存器里 //注意由于该变量不一定放在内存,所以不能用&取地址 register float mag=magnitude(); Point3d normal; normal._x = _x/mag; normal._y = _y/mag; normal._z = _z/mag;原创 2021-05-29 13:38:48 · 321 阅读 · 1 评论 -
《深度探索c++对象模型》第二章:构造函数
2.1 Default Constructor的建构操作常见的两个误解: 1、任何类如果没有定义默认构造函数,编译器就会合成一个出来(错误) 2、编译器合成出来的默认构造函数会明确设定类里面的每一个数据成员的默认值,也就是会帮类里所有数据成员都初始化(错误)编译器会合成默认构造函数的四种情况情况一、类A的数据成员里有类B的对象,且类B有构造函数 如果类A没有构造函数,那么编译器就会合成一个默认构造函数。例子:class Foo{ public: Foo(){}; F原创 2021-05-25 21:04:31 · 307 阅读 · 2 评论 -
《深度探索c++对象模型》第一章:C++对象
1.1 C++对象模型C++对象模型 c++中,类的数据成员static和non-static两种,成员函数有static,non-static和virtual三种。 书中的例子:class Point{ public: Point(float xval); virtual ~Point(); float x() const; static int PointCount(); protected: virtual ostream& print(ostr原创 2021-05-25 20:45:24 · 213 阅读 · 1 评论 -
《深度探索c++对象模型》第三章:数据成员
空虚基类与派生类占用的内存class X{};class Y:public virtual X{};class Z:public virtual X{};class A:public Y,public Z{}; 上述类X,Y,Z,A中都没有显式定义的数据,只表示了它们之间的继承关系,可是它们的大小都不为0:书中给出的大小VS2017测试的大小sizeof X:1sizeof X:1sizeof Y:8sizeof Y:4sizeof Z:8sizeof原创 2021-05-25 20:30:44 · 491 阅读 · 2 评论 -
C++笔记总结——引用,指针与const
引用,指针与const一、引用(严格来说这里指的是“左值引用”)两条规则:(1)定义引用时,程序会把引用和它的初始值对象一直绑定(bind)在一起(2)引用绑定了一个对象后不能重新绑定到另一个对象规则(1),与拷贝不同,引用和对象绑定后,改变其中一个,另一个也会跟着改变。换而言之,引用是为一个已经存在的一个对象起的另一个名字(注意引用本身并非对象,引用即别名),所以引用只能绑定对象不能绑定字面值或者表达式的计算结果。例如,小明的别名叫小胖,叫小明起床,小明起床了,意味着小胖也起床了,小明和小胖是一原创 2021-01-28 15:31:03 · 228 阅读 · 0 评论 -
Linux c++ socket写一个简单TCP文件服务器
Linux c++ socket写一个简单TCP文件服务器首先输入操作download filename 或者 update filename,客户端将操作和文件名传送给服务器端,然后根据操作进行接收或者发送文件(服务器端发送或者接收文件),注意文件的路径不同用一个结构体MyFile存放每次发送文件的长度(不是整个文件的长度)和文件的内容下面是代码,有注释,(代码可以封装的更好)://de...原创 2019-03-17 16:37:42 · 622 阅读 · 1 评论 -
epoll线程池实现简单TCP并发文件服务器
epoll+线程池 简单TCP并发文件服务器epoll部分代码在libevent的源码上修改的线程池部分参考 https://www.cnblogs.com/yangang92/p/5485868.html操作过程:将所有文件拷贝到Linux目录下(改源码中存放文件的路径),make命令进行编译,打开(多个)终端./server运行服务器端,./client运行客户端,然后在客户端下输入...原创 2019-03-23 15:36:34 · 1010 阅读 · 0 评论